Problem:
Du vill lägga till ett givet antal dagar till ett datum i T-SQL.
Exempel:
Vår databas har en tabell som heter Flight
med data i kolumnerna Code
och DepartureDate
.
Kod | Avgångsdatum |
---|---|
LT2030 | 2019-02-20 |
GH1100 | 2019-03-01 |
SR5467 | 2019-12-30 |
Låt oss ändra avresedatumet för alla flyg och lägga till två dagar till det aktuella avresedatumet.
Lösning:
Vi kommer att använda DATEADD()-funktionen för att ange tidsenhet som ska läggas till, definiera hur mycket som ska läggas till och välja datum som ska ändras. Ta en titt på frågan:
SELECT Code, DATEADD(day, 2, DepartureDate) AS ChangedDepartureDate FROM Flight;
Här är resultatet:
Kod | Ändrat avgångsdatum |
---|---|
LT2030 | 2019-02-22 |
GH1100 | 2019-03-03 |
SR5467 | 2020-01-01 |
Diskussion:
För att ändra ett datum och/eller tid genom att lägga till ett specifikt nummer för en vald tidsenhet, använd SQL Servers DATEADD()-funktion. Den här funktionen fungerar på datatyperna datum, tid eller datum och tid. Det krävs tre argument:
- Önskad enhet för datum/tid att lägga till. I vårt exempel är det dag; vi vill lägga till dagar till datumet.
- Hur många enheter som ska läggas till. I vårt exempel är detta 2; vi vill lägga till 2 dagar till det befintliga datumet.
- En kolumn som innehåller datum/tid/datumtid som vi vill ändra. (I vårt exempel använder vi kolumnen DepartureDate.) Detta argument kan också vara ett uttryck som returnerar ett datum/tid/datumtid.
Funktionen DATEADD() returnerar ett nytt datum. I vårt exempel returneras det nya datumet som ChangedDepartureDate
kolumn. För flygkoden "LT2030" är datumet "2019-02-20" nu "2019-02-22".
Funktionen DATEADD() kan använda datum- och tidsenheter som year
, quarter
, month
, dayofyear
, day
, week
, weekday
, hour
, minute
, second
, etc. Du kan lära dig mer i SQL Server-dokumentationen.