DATEDIFF (Transact-SQL)

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

Icona di collegamento a un argomentoConvenzioni 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

Guida in linea e informazioni

Assistenza su SQL Server 2005