DATEDIFF (Transact-SQL)

Restituisce il numero di limiti di data e ora che si sovrappongono tra due date specificate.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL


DATEDIFF ( datepart , startdate , enddate )

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.

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.

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

Aggiunte alla community

AGGIUNGI
Mostra: