Problem:
Du vil gerne tilføje et givet antal dage til en dato i T-SQL.
Eksempel:
Vores database har en tabel med navnet Flight
med data i kolonnerne Code
og DepartureDate
.
Kode | Afrejsedato |
---|---|
LT2030 | 2019-02-20 |
GH1100 | 2019-03-01 |
SR5467 | 2019-12-30 |
Lad os ændre afgangsdatoen for alle fly og føje to dage til den aktuelle afgangsdato.
Løsning:
Vi vil bruge DATEADD()-funktionen til at angive den tidsenhed, der skal tilføjes, definere hvor meget der skal tilføjes og vælge datoen, der skal ændres. Tag et kig på forespørgslen:
SELECT Code, DATEADD(day, 2, DepartureDate) AS ChangedDepartureDate FROM Flight;
Her er resultatet:
Kode | Ændret afgangsdato |
---|---|
LT2030 | 2019-02-22 |
GH1100 | 2019-03-03 |
SR5467 | 2020-01-01 |
Diskussion:
For at ændre en dato og/eller et klokkeslæt ved at tilføje et specifikt tal for en valgt tidsenhed, skal du bruge SQL Servers DATEADD() funktion. Denne funktion fungerer på dato, klokkeslæt eller dato- og klokkeslætsdatatyper. Det kræver tre argumenter:
- Den ønskede enhed for dato/klokkeslæt, der skal tilføjes. I vores eksempel er det dag; vi ønsker at tilføje dage til datoen.
- Hvor mange enheder der skal tilføjes. I vores eksempel er dette 2; vi ønsker at tilføje 2 dage til den eksisterende dato.
- En kolonne, der indeholder den dato/klokkeslæt/datotid, vi ønsker at ændre. (I vores eksempel bruger vi kolonnen DepartureDate.) Dette argument kan også være et udtryk, der returnerer en dato/tid/datotid.
Funktionen DATEADD() returnerer en ny dato. I vores eksempel returneres den nye dato som ChangedDepartureDate
kolonne. For flykoden 'LT2030' er datoen '2019-02-20' nu '2019-02-22'.
Funktionen DATEADD() kan bruge dato- og tidsenheder som year
, quarter
, month
, dayofyear
, day
, week
, weekday
, hour
, minute
, second
osv. Du kan lære mere i SQL Server-dokumentationen.