Проблем:
Искате да добавите определен брой дни към дата в T-SQL.
Пример:
Нашата база данни има таблица с име Flight с данни в колоните Code и DepartureDate .
| Код | Дата на заминаване |
|---|---|
| LT2030 | 20.02.2019 |
| GH1100 | 01.03.2019 |
| SR5467 | 30.12.2019 |
Нека променим датата на заминаване за всички полети, като добавим два дни към текущата дата на заминаване.
Решение:
Ще използваме функцията DATEADD(), за да посочим единицата време за добавяне, да дефинираме колко да добавим и да изберем датата за промяна. Разгледайте заявката:
SELECT Code,
DATEADD(day, 2, DepartureDate)
AS ChangedDepartureDate
FROM Flight;
Ето резултата:
| Код | ChangedDepartureDate |
|---|---|
| LT2030 | 22.02.2019 |
| GH1100 | 03.03.2019 |
| SR5467 | 01.01.2020 |
Дискусия:
За да промените дата и/или час чрез добавяне на конкретен номер от избрана единица време, използвайте функцията DATEADD() на SQL Server. Тази функция работи с тип данни за дата, час или дата и час. Необходими са три аргумента:
- Желаната единица за дата/час за добавяне. В нашия пример това е ден; искаме да добавим дни към датата.
- Колко единици да добавите. В нашия пример това е 2; искаме да добавим 2 дни към съществуващата дата.
- Колона, съдържаща дата/час/дата и час, които искаме да променим. (В нашия пример използваме колоната DepartureDate.) Този аргумент може да бъде и израз, който връща дата/час/дата и час.
Функцията DATEADD() връща нова дата. В нашия пример новата дата се връща като ChangedDepartureDate колона. За кода на полета „LT2030“ датата „2019-02-20“ вече е „2019-02-22“.
Функцията DATEADD() може да използва единици за дата и час като year , quarter , month , dayofyear , day , week , weekday , hour , minute , second , и т.н. Можете да научите повече в документацията на SQL Server.