SQL Server Datediff

SQL Server Datediff
Le date sono importanti quando si lavora con i database. Ti consentono di includere un timestamp specifico per i dati.

Usando questa guida, imparerai come calcolare la differenza tra due date utilizzando la funzione SQL Server DateDiff ().

Uso di base

La funzione DateDiff consente di passare i valori della data di inizio e fine. Quindi calcola e restituisce la differenza tra loro in anni, mesi, settimane, giorni, ecc.

La sintassi della funzione è come:

datediff (unità, start_date, end_date);

Argomenti della funzione

La funzione tre argomenti principali espressi come:

1. Unità: rappresenta le unità in base alle quali la funzione segnalerà la differenza tra la data di inizio e fine specificata. SQL Server non supporta il passaggio del valore del parametro dell'unità come variabile di una stringa come "anno";

La tabella seguente mostra l'unità e l'abbreviazione che è possibile utilizzare nel parametro dell'unità.

abbreviazione dell'unità
-------------------------------------------------- ------------
nanosecondi NS
Microsecondi MCS
millisecondo MS
Second S, SS
Minuto mi, n
Ora hh
Settimana WK, WW
Giorno dd, d
Giorno dell'anno, dy, y
Mese mm, m
Quarto QQ, Q
ANNO YY, YYYY

2. start_date & end_date - definisce le due date la cui differenza deve essere calcolata. Il valore di entrambi gli argomenti può essere una stringa letterale o un'espressione che può risolvere un valore di tipo: data, datetime, datetim2, datetimeoffset, time, piccolodatetime.
Per evitare l'ambiguità, considerare l'uso di quattro cifre per rappresentare un anno.

Valore di ritorno della funzione

La funzione DateDiff restituisce un tipo Int, che rappresenta la differenza di data di inizio e fine. A volte, la differenza potrebbe essere fuori portata per la dimensione di un numero intero. In tal caso, la funzione DateDiff restituirà un errore. Prendi in considerazione l'utilizzo della funzione datediff_big per tale scenario.

SQL Server DateDiff () Esempi

I seguenti esempi sono utili per illustrare come lavorare con la funzione DateDiff ().

Esempio 1:

Considera l'esempio mostrato di seguito:

Seleziona datediff (mese, "1998-09-06", "2022-06-06") come differenza;

La query sopra dovrebbe restituire la differenza totale del mese tra la data di inizio e fine come:

differenza
-----------
285
(1 riga interessata)

Esempio 2:

Supponiamo di voler calcolare quanti secondi ci sono in un giorno? È possibile utilizzare la funzione DateDiff come mostrato:

Seleziona datediff (secondo, "2022-01-01", "2022-01-02") come differenza;

L'esempio sopra dovrebbe restituire il numero di secondi in un giorno come:

-----------
86400
(1 riga interessata)

Esempio 3:

È possibile incontrare uno scenario in cui la differenza tra due date è grande del massimo per un tipo intero. Ad esempio, la differenza nei nanosecondi in un giorno.

Considera la query di esempio di seguito:

Seleziona datediff (nanosecondo, '2022-01-01', '2022-01-02') come differenza;

Se eseguiamo la query sopra, SQL Server restituisce un errore di overflow come:

La funzione DateDiff ha provocato un overflow. Il numero di parti da date che separano due istanze di data/ora è troppo grande. Prova a utilizzare DateDiff con una data data meno precisa.

Per risolvere questo problema, utilizzare la funzione datediff_big come:

Seleziona datediff_big (nanosecondo, '2022-01-01', '2022-01-02') come differenza;

In questo esempio, la query restituisce il numero di nanosecondi in un giorno come:

differenza
--------------------
86400000000000

Esempio 4:

L'esempio seguente mostra come calcolare la differenza in ore tra il 1998 e il 2021.

Seleziona datediff (ora, "1998-01-01", "2021-01-01");

Il valore risultante è come:

-----------
201624

Esempio 5:

Poiché il valore di ritorno della funzione DateDiff è un numero intero, possiamo lanciarlo su una stringa, permettendoti di eseguire la concatenazione delle stringhe.

Per esempio:

Selezionare il cast (datediff (ora, "1998-01-01", "2021-01-01") come varchar (20)) + "ore";

L'esempio sopra lancia il valore da una stringa intera e aggiunge una concatenazione della stringa.

Il risultato di esempio è come:

--------------------------
201624 ore

Parole finali

Speriamo che ti sia piaciuto e imparato come calcolare le differenze tra due date usando varie unità in SQL Server. Gli esempi forniti in questa guida possono aiutarti a manipolare i dati di data e tempo in modo più efficiente.

Grazie per aver letto!