Database
 sql >> Database >  >> RDS >> Database

Come sottrarre 30 giorni da una data in T-SQL

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.