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à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:
differenzaEsempio 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:
-----------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:
differenzaEsempio 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:
-----------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:
--------------------------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!