27 Novembre 2021
Expand search form

Come funziona datediff in SQL?

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).

Continua…

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

Continua…

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.

Continua…

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…

Continua…

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.

Continua…

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.

Continua…

Possiamo sottrarre due date in SQL?

La funzione DATEDIFF() restituisce la differenza tra due date.

Continua…

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

Continua…

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

Continua…

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.

Continua…

Come si calcolano i giorni nelle date?

Come calcolare il numero di giorni tra due date in ExcelYouTube | Time – 0:59 [Inglese]

Continua…

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.

Continua…

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…

Continua…

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.

Continua…

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

Continua…

Articolo precedente

Come puoi distinguere una foglia semplice da una foglia composta?

Articolo successivo

Cos’è la malattia della cancrena da gas?

You might be interested in …

Quanto costa pompare un sistema settico?

In genere costa circa $300 per pompare una fossa settica. Mentre i prezzi spesso vanno da circa $200 a $400, alcuni progetti di pompaggio settico possono costare fino a $700. Il costo totale del vostro […]

Le linee parallele sono coerenti e dipendenti?

Per studiare situazioni come quella del produttore di skateboard, dobbiamo riconoscere che abbiamo a che fare con più di una variabile e probabilmente più di un’equazione. A sistema di equazioni lineari consiste di due o […]

Come pulire l’acqua velocemente?

Tornare a casa in un seminterrato allagato o in un soggiorno fradicio può farvi girare la testa, chiedendovi da dove cominciare. Se l’acqua delle inondazioni entra in casa vostra a causa di problemi fognari, un […]