Problem:
Du vill få datumet 30 dagar före ett givet datum i T-SQL.
Exempel:
Vår databas har en tabell som heter Computer med data i kolumnerna Id , Name och PurchaseDate .
| Id | Namn | Köpdatum |
|---|---|---|
| 1 | Sony GX1000 | 2019-01-20 |
| 2 | Samsung LX2000 | 2019-04-15 |
| 3 | Dell K80 | 2019-08-30 |
Låt oss få namnet på varje dator och datumet 30 dagar före dess inköpsdatum.
Lösning:
Vi kommer att använda DATEADD()-funktionen för att subtrahera ett givet antal dagar från ett datum.
SELECT Name,
DATEADD(day, -30, PurchaseDate)
AS BeforePurchaseDate;
FROM Computer;
Här är resultatet av frågan:
| Namn | FörePurchaseDate |
|---|---|
| Sony GX1000 | 2018-12-21 |
| Samsung LX2000 | 2019-03-16 |
| Dell K80 | 2019-07-31 |
Diskussion:
Om du vill subtrahera datum eller tider i SQL Server, använd DATEADD() fungera. Det krävs tre argument. Det första argumentet är datum/tidsenheten – i vårt exempel anger vi dagen enhet.
Nästa är datumet eller tidsenhetens värde . I vårt exempel är detta -30 , eftersom vi tar 30 dagar från det aktuella datumet. Kom ihåg att minus anger subtrahera värdet; utan detta tecken lägger du till det givna datumet.
Det sista argumentet är datumet vi opererar på; detta kan vara en kolumn för datum/tid/datumtid eller något uttryck som returnerar ett datum eller en tid. I vårt exempel använder vi PurchaseDate , ett date kolumn.
Funktionen returnerar ett ändrat datum. I vårt exempel, frågan för datorn med namnet 'Dell K80' returnerar ett nytt datum i BeforePurchaseDate kolumn. Det ursprungliga datumet '2019-08-30' ändras till datumet från 30 dagar tillbaka:'2018-07-31' .
Du kan använda DATEADD() funktion för alla datum- och tidsdatatyper.