Probleem:
U wilt de datum 30 dagen voor een bepaalde datum in T-SQL ontvangen.
Voorbeeld:
Onze database heeft een tabel met de naam Computer
met gegevens in de kolommen Id
, Name
, en PurchaseDate
.
Id | Naam | Aankoopdatum |
---|---|---|
1 | Sony GX1000 | 2019-01-20 |
2 | Samsung LX2000 | 2019-04-15 |
3 | Dell K80 | 2019-08-30 |
Laten we de naam van elke computer krijgen en de datum 30 dagen voor de aankoopdatum.
Oplossing:
We zullen de functie DATEADD() gebruiken om een bepaald aantal dagen van een datum af te trekken.
SELECT Name, DATEADD(day, -30, PurchaseDate) AS BeforePurchaseDate; FROM Computer;
Dit is het resultaat van de zoekopdracht:
Naam | Vooraankoopdatum |
---|---|
Sony GX1000 | 21-12-2018 |
Samsung LX2000 | 2019-03-16 |
Dell K80 | 31-07-2019 |
Discussie:
Als u datums of tijden in SQL Server wilt aftrekken, gebruikt u de DATEADD()
functie. Er zijn drie argumenten nodig. Het eerste argument is de datum/tijd-eenheid – in ons voorbeeld specificeren we de dag eenheid.
Het volgende is de datum- of tijdseenheid waarde . In ons voorbeeld is dit -30 , omdat we 30 dagen verwijderd zijn van de huidige datum. Onthoud dat de min staat voor aftrekken de waarde; zonder dit teken voegt u toe aan de opgegeven datum.
Het laatste argument is de datum waarop we actief zijn; dit kan een datum/tijd/datum/tijd-kolom zijn of een andere uitdrukking die een datum of tijd retourneert. In ons voorbeeld gebruiken we PurchaseDate
, een date
kolom.
De functie retourneert een gewijzigde datum. In ons voorbeeld is de query voor de computer met de naam 'Dell K80'
geeft een nieuwe datum terug in de BeforePurchaseDate
kolom. De originele datum '2019-08-30'
is gewijzigd in de datum van 30 dagen terug:'2018-07-31'
.
U kunt de DATEADD()
. gebruiken functie voor alle datum- en tijdgegevenstypen.