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.