Problema:
Vorresti ottenere la data 30 giorni prima di una determinata data in T-SQL.
Esempio:
Il nostro database ha una tabella denominata Computer
con i dati nelle colonne Id
, Name
e PurchaseDate
.
Id | Nome | Data di acquisto |
---|---|---|
1 | Sony GX1000 | 20-01-2019 |
2 | Samsung LX2000 | 15-04-2019 |
3 | Dell K80 | 30-08-2019 |
Prendiamo il nome di ogni computer e la data 30 giorni prima data di acquisto.
Soluzione:
Useremo la funzione DATEADD() per sottrarre un determinato numero di giorni da una data.
SELECT Name, DATEADD(day, -30, PurchaseDate) AS BeforePurchaseDate; FROM Computer;
Ecco il risultato della query:
Nome | Prima della data di acquisto |
---|---|
Sony GX1000 | 21-12-2018 |
Samsung LX2000 | 16-03-2019 |
Dell K80 | 31-07-2019 |
Discussione:
Se desideri sottrarre date o ore in SQL Server, utilizza DATEADD()
funzione. Occorrono tre argomenti. Il primo argomento è l'unità di data/ora:nel nostro esempio specifichiamo il giorno unità.
Il prossimo è il valore dell'unità di data o ora . Nel nostro esempio, questo è -30 , perché mancano 30 giorni alla data corrente. Ricorda che il meno denota sottrazione il valore; senza questo segno, stai aggiungendo alla data indicata.
L'ultimo argomento è la data in cui stiamo operando; potrebbe essere una colonna data/ora/dataora o qualsiasi espressione che restituisce una data o un'ora. Nel nostro esempio, utilizziamo PurchaseDate
, una date
colonna.
La funzione restituisce una data modificata. Nel nostro esempio, la query per il computer denominata 'Dell K80'
restituisce una nuova data in BeforePurchaseDate
colonna. La data originale '2019-08-30'
è cambiato con la data da 30 giorni indietro:'2018-07-31'
.
Puoi usare il DATEADD()
funzione per tutti i tipi di dati di data e ora.