DATEDIFF (Transact-SQL)
Restituisce il numero di limiti di data e ora che si sovrappongono tra due date specificate.
Convenzioni della sintassi Transact-SQL
Sintassi
DATEDIFF ( datepart , startdate , enddate )
Argomenti
datepart
Parametro che specifica la parte della data in base a cui si desidera calcolare la differenza. Nella tabella seguente vengono elencate le parti di data e le abbreviazioni riconosciute da SQL Server 2005. Tali parti di data e abbreviazioni non possono essere immesse come variabili dichiarate dall'utente.Parte della data Abbreviazioni year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
day
dd, d
week
wk, ww
Hour
hh
minute
mi, n
second
ss, s
millisecond
ms
startdate -
Data di inizio per il calcolo. startdate è un'espressione che restituisce un valore di tipo datetime o smalldatetime oppure una stringa di caratteri con un formato di data.Poiché la precisione del tipo di dati smalldatetime è limitata ai minuti, quando viene utilizzato un valore di tipo smalldatetime, i secondi e i millisecondi sono sempre pari a 0.
Se si specificano solo le ultime due cifre dell'anno, i valori minori o uguali alle ultime due cifre del valore dell'opzione di configurazione two-digit year cutoff vengono interpretati come appartenenti allo stesso secolo dell'anno di cambio data. I valori maggiori delle ultime due cifre del valore di questa opzione vengono interpretati come appartenenti al secolo precedente a quello dell'anno di cambio data. Se, ad esempio, l'opzione two-digit year cutoff è impostata su 2049 (valore predefinito), il valore 49 viene interpretato come 2049 e il valore 50 viene interpretato come 1950. Per evitare ambiguità, specificare gli anni utilizzando il formato a quattro cifre.
Per ulteriori informazioni sull'impostazione dei valori di ora, vedere Formati di ora. Per ulteriori informazioni sull'impostazione delle date, vedere Tipi di dati data/ora (Transact-SQL).
- enddate
Data di fine per il calcolo. enddate è un'espressione che restituisce un valore di tipo datetime o smalldatetime oppure una stringa di caratteri con un formato di data.
Tipi restituiti
integer
Osservazioni
startdate viene sottratto da enddate. Se startdate è una data successiva a enddate, viene restituito un valore negativo.
Se il risultato non è compreso nell'intervallo valido per i valori integer, la funzione DATEDIFF genera un errore. Il numero massimo per i millisecondi è 24 giorni, 20 ore, 31 minuti e 23.647 secondi. Il numero massimo per i secondi è 68 anni.
Il metodo di conteggio dei limiti che si sovrappongono, ad esempio minuti, secondi e millisecondi, rende il risultato restituito da DATEDIFF consistente per tutti i tipi di dati. Il risultato è un valore di tipo integer con segno pari al numero di limiti datepart che si sovrappongono tra la prima e la seconda data. Il numero di settimane tra domenica 4 gennaio e domenica 11 gennaio, ad esempio, è uguale a 1.
Esempi
Nell'esempio seguente viene calcolata la differenza in giorni tra la data corrente e la data in cui sono stati ordinati i prodotti registrati nel database AdventureWorks
.
USE AdventureWorks;
GO
SELECT DATEDIFF(day, OrderDate, GETDATE()) AS NumberOfDays
FROM Sales.SalesOrderHeader;
GO
Vedere anche
Riferimento
CAST e CONVERT (Transact-SQL)
Tipi di dati (Transact-SQL)
Funzioni di data e ora (Transact-SQL)
Altre risorse
Formato ISO 8601
Formato di data alfabetico
Formato di data numerico
Formato di data e ora ODBC
Formati di ora
Formato stringa senza separatori