Spesso, abbiamo bisogno di calcolare la differenza tra due date e restituire i risultati in una parte o incremento di data desiderata, come giorni, ore, minuti. Fortunatamente, SQL Server fornisce una funzione per questo.
In questo articolo mostrerò le funzioni SQL DATEDIFF e DATEDIFF_BIG e condividerò diversi esempi di come usarle. Vi mostrerò anche le limitazioni e come aggirarle. Imparerete anche come calcolare quanti anni ha la città di St. Augustine in nanosecondi.
Soluzione
Esploreremo le funzioni DATEDIFF e DATEDIFF_BIG, mostreremo come vengono utilizzate e forniremo diversi esempi.
Cos’è la funzione DATEDIFF di SQL Server
DATEDIFF() è una funzione di base di SQL Server che può essere usata per fare la matematica delle date. In particolare, ottiene la differenza tra 2 date con i risultati restituiti in unità di data specificate come anni, mesi, giorni, minuti e secondi come un int (intero).
Cos’è la funzione DATEDIFF_BIG di SQL Server
DATEDIFF_BIG() è una funzione SQL che è stata introdotta in SQL Server 2016. Può essere utilizzata per fare anche la matematica delle date. In particolare, ottiene la differenza tra 2 date con i risultati restituiti in unità di data specificate come anni, mesi, giorni, minuti, secondi come bigint valore.
Come usare DATEDIFF e DATEDIFF_BIG
L’uso di DATEDIFF e DATEDIFF_BIG è lo stesso: DATEDIFF(parte di data dei valori di ritorno, data iniziale, data finale).
Primo parametro: è un valido datepart che è uno dei seguenti da nanosecondo a anno:
DatePart Nome | Abbreviazione |
---|---|
anno | yy, yyyy |
trimestre | qq, q |
mese | mm, m |
giorno dell’anno | dy, y |
giorno | dd, d |
settimana | wk, ww |
ora | hh |
minuto | mi, n |
secondo | ss, s |
millisecondo | ms |
microsecondo | mcs |
nanosecondo | ns |
Secondo parametro: è la Data di inizio. Una data valida, datetime, datetimeoffset, datetime2, smalldatetime, o una variabile di tipo dati time o una stringa che si è risolta in un datatype datetime.
Terzo parametro: è la Data di fine. Una data valida, datetime, datetimeoffset, datetime2, smalldatetime, o una variabile di tipo datetime o una stringa risolta in un datatype datetime.
*Questa informazione può essere trovata su Microsoft Docs!
Esempi di SQL Server DATEDIFF
Di seguito ci sono degli esempi di base che utilizzano gli argomenti più comuni di datapart.
Esempio | Codice SQL Server DATEDIFF | Output |
---|---|---|
Quanti minuti ci sono in un giorno? | SELEZIONARE DATEDIFF(MINUTO, ’07-04-2020′, ’07-05-2020′) | 1440 minuti |
Quante ore ci sono in un giorno? | SELEZIONARE DATEDIFF(ORA, ’01-01-2020′, ’01-02-2020′) | 24 ore |
Quanti giorni ci sono in un anno? | SELEZIONARE DATEDIFF(GIORNO, ’01-01-2020′, ’12-31-2020′) | 365 giorni |
Quanti mesi ci sono in un anno? | SELEZIONARE DATEDIFF(MESE, ’01-01-2019′, ’01-01-2020′) | 12 Mesi |
Quanti anni dal 2000 al 2020? | SELEZIONARE DATEDIFF(ANNO, ’01-01-2000′, ’01-01-2020′) | 20 anni |
Quando usare la funzione DATEDIFF_BIG di SQL Server
Usate la funzione DATEDIFF_BIG quando i vostri risultati superano l’intervallo di un valore intero che è compreso tra (-2.147.483.648 a +2.147.483.647).
BIGINT ha un intervallo di (-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807). Sembra che sarebbe difficile superare questo intervallo! Ma presenteremo un esempio che supera questo intervallo quando si usa DATEDIFF_BIG.
SQL Server DATEDIFF_BIG invece di DATEDIFF
Come superare il valore di ritorno di DATEDIFF int? Microsoft Docs fornisce 2 esempi di come superare il valore di ritorno dell’intero DATEDIFF che dimostro qui sotto e mostra come DATEDIFF_BIG funziona per aggirare la limitazione.
Il risultato è il seguente errore.
Ecco un altro esempio.
Il risultato è il seguente errore.
Usando invece DATEDIFF_BIG si evitano gli errori di cui sopra.
Quando DATEDIFF_BIG non è abbastanza grande
Secondo Microsoft Docs, DATEDIFF_BIG può traboccare solo se si usa la precisione al nanosecondo, dove la differenza tra enddate e startdate è più di 292 anni, 3 mesi, 10 giorni, 23 ore, 47 minuti e 16,8547758 secondi.
Questo potrebbe essere un problema se volete sapere quanti nanosecondi sono passati da quando la città più antica d’America, St. Augustine in Florida, è stata fondata!
Che palle! Otteniamo un errore.
Proviamo a farlo in più passi:
Walla! Ora sappiamo quanti nanosecondi sono passati dalla fondazione di St. Augustine.
Conclusione
Spero che vi sia piaciuto questo esercizio su DATEDIFF e DATEDIFF_BIG. DATEDIFF è una funzione SQL comunemente usata che è stata in giro per molti anni. DATEDIFF_BIG è una funzione relativamente nuova che è stata introdotta in SQL Server 2016. Anche se ho fornito esempi di overflow da queste funzioni, è raro che si incontrino questi scenari. Queste sono funzioni utili che dovrebbero essere aggiunte alla vostra cassetta degli attrezzi SQL!
Potresti anche essere interessato agli argomenti
Come funziona SQL datediff?
DATEDIFF() è una funzione di base di SQL Server che può essere usata per fare matematica delle date. In particolare, ottiene la differenza tra 2 date con i risultati restituiti in unità di data specificate come anni, mesi, giorni, minuti, secondi come un valore int (intero).
Come si usa la funzione datediff?
Per calcolare il numero di giorni tra data1 e data2, potete usare Giorno dell’anno (“y”) o Giorno (“d”). Quando l’intervallo è Weekday (“w”), DateDiff restituisce il numero di settimane tra le due date….DateDiff Function.SettingDescriptionqQuartermMonthyDay of yearDay6 altre righe
Come faccio a contare tra due date in SQL?
Per calcolare la differenza tra due date in colonne diverse, usiamo le due colonne createdDate e LastLogin della tabella di registrazione e applichiamo la funzione DATEDIFF su queste colonne. Per trovare la differenza tra due date in colonne diverse, abbiamo bisogno di due date dalle diverse colonne.
Come si usano datediff e Getdate in SQL?
Vedere la query e il risultato:La query con DATEDIFF: SELECT DATEDIFF(year, ‘2010-03-13’, GETDATE()) come “differenza di anni”; … La query: SELECT *, GETDATE() come “Data corrente”, … Per Anno: anno, yy, yyyy.Mese: mese, mm, m.Giorno dell’anno: dayofyear, dy, y.Giorno: giorno, dd, d.Settimana: settimana, wk, ww.Ora: ora, hh.Altri elementi…
datediff include l’inizio e la fine?
La funzione DATEDIFF restituisce il numero INTEGER della differenza tra le due date specificate. L’intervallo di date inizia a startdate e finisce a enddate.
DateDiff arrotonda?
DateDiff NON ARROTONDA, calcola il numero di cambiamenti. Tornerà che c’è UN MESE tra il 31 gennaio e il 1° febbraio, ma nessuno tra il 1° gennaio e il 31 gennaio.
Possiamo sottrarre due date in SQL?
La funzione DATEDIFF() restituisce la differenza tra due date.
Come si sottraggono due valori temporali in SQL?
Usando la funzione DATEADD ed esempiAggiungi 30 giorni a una data SELECT DATEADD(DD,30,@Date)Aggiungi 3 ore a una data SELECT DATEADD(HOUR,-3,@Date)Sottrai 90 minuti dalla data SELECT DATEADD(MINUTE,-90,@Date)Guarda il grafico per avere una lista di tutte le opzioni.Jul 19, 2021
Come si sottrae in SQL?
Gli operatori aritmetici possono eseguire operazioni aritmetiche sugli operandi numerici coinvolti. Gli operatori aritmetici sono l’addizione (+), la sottrazione (-), la moltiplicazione (*) e la divisione (/)….Operatori aritmetici.OperatoreSignificatoOpera su (Sottrarre)SottrazioneValore numerico* (Moltiplicare)MoltiplicazioneValore numerico/ (Dividere)DivisioneValore numerico2 altre righe- 26 febbraio 2020
Come si sottraggono i giorni da una data in SQL?
Per trovare la differenza tra le date, usate la funzione DATEDIFF(datepart, startdate, enddate). L’argomento datepart definisce la parte della data/data in cui volete esprimere la differenza. Il suo valore può essere anno, trimestre, mese, giorno, minuto, ecc.
Come si calcolano i giorni nelle date?
Come calcolare il numero di giorni tra due date in ExcelYouTube | Time – 0:59 [Inglese]
Come si arrotonda in SQL?
In SQL, si arrotonda all’intero più vicino usando la funzione CEIL o CEILING, a seconda che si stia usando SQL Server, Oracle, MySQL o PostgreSQL.
Come faccio a sottrarre due colonne di date in SQL?
“Sottrarre due date in sql” Codice Risposta’s@start_dt DATETIME2= ‘2019-12-31 23:59:59.9999999’,@end_dt DATETIME2= ‘2020-01-01 00:00:00. 0000000’;DATEDIFF(year, @start_dt, @end_dt) diff_in_year,DATEDIFF(quarter, @start_dt, @end_dt) diff_in_quarter,DATEDIFF(month, @start_dt, @end_dt) diff_in_month,Altri articoli…
Come faccio a sottrarre due query in SQL?
L’operatore Meno in SQL è usato con due istruzioni SELECT. L’operatore MINUS è usato per sottrarre il set di risultati ottenuto dalla prima query SELECT dal set di risultati ottenuto dalla seconda query SELECT.
Come faccio a sottrarre due valori da un’altra tabella in SQL?
Usa un join e poi la sottrazione. – Radim Bača. Apr 13 ’18 at 7:01.select t1.amount – t2.amount from table1 t1 join table2 t2 on t1.id = t2.id. – Radim Bača. Apr 13 ’18 at 7:02.Apr 13, 2018