Problem:
Chcesz dodać określoną liczbę dni do daty w T-SQL.
Przykład:
Nasza baza danych zawiera tabelę o nazwie Flight z danymi w kolumnach Code i DepartureDate .
| Kod | Data wyjazdu |
|---|---|
| LT2030 | 2019-02-20 |
| GH1100 | 2019-03-01 |
| SR5467 | 2019-12-30 |
Zmieńmy datę wylotu dla wszystkich lotów, dodając dwa dni do aktualnej daty wylotu.
Rozwiązanie:
Użyjemy funkcji DATEADD(), aby określić jednostkę czasu do dodania, określić ilość do dodania i wybrać datę do zmiany. Spójrz na zapytanie:
SELECT Code,
DATEADD(day, 2, DepartureDate)
AS ChangedDepartureDate
FROM Flight;
Oto wynik:
| Kod | Zmieniona data wyjazdu |
|---|---|
| LT2030 | 22-02-2019 |
| GH1100 | 2019-03-03 |
| SR5467 | 2020-01-01 |
Dyskusja:
Aby zmienić datę i/lub czas poprzez dodanie określonej liczby wybranej jednostki czasu, użyj funkcji DATEADD() SQL Server. Ta funkcja działa na typach danych typu data, godzina lub data i godzina. Wymaga trzech argumentów:
- Wymagana jednostka daty/czasu do dodania. W naszym przykładzie jest to dzień; chcemy dodać dni do daty.
- Ile jednostek dodać. W naszym przykładzie jest to 2; chcemy dodać 2 dni do istniejącej daty.
- Kolumna zawierająca datę/godzinę/datagodzina, którą chcemy zmienić. (W naszym przykładzie używamy kolumny DataWyjazdu.) Ten argument może być również wyrażeniem zwracającym datę/godzinę/data-godzinę.
Funkcja DATEADD() zwraca nową datę. W naszym przykładzie nowa data jest zwracana jako ChangedDepartureDate kolumna. W przypadku kodu lotu „LT2030” data „2019-02-20” to teraz „2019-02-22”.
Funkcja DATEADD() może używać jednostek daty i czasu, takich jak year , quarter , month , dayofyear , day , week , weekday , hour , minute , second itp. Więcej informacji można znaleźć w dokumentacji SQL Server.