Проблем:
Искате да получите датата 30 дни преди дадена дата в T-SQL.
Пример:
Нашата база данни има таблица с име Computer с данни в колоните Id , Name и PurchaseDate .
| Id | Име | Дата на покупка |
|---|---|---|
| 1 | Sony GX1000 | 20.01.2019 |
| 2 | Samsung LX2000 | 15.04.2019 |
| 3 | Dell K80 | 30.08.2019 |
Нека получим името на всеки компютър и датата 30 дни преди датата на покупката му.
Решение:
Ще използваме функцията DATEADD(), за да извадим определен брой дни от дадена дата.
SELECT Name,
DATEADD(day, -30, PurchaseDate)
AS BeforePurchaseDate;
FROM Computer;
Ето резултата от заявката:
| Име | BeforePurchaseDate |
|---|---|
| Sony GX1000 | 21.12.2018 |
| Samsung LX2000 | 16.03.2019 |
| Dell K80 | 31.07.2019 |
Дискусия:
Ако искате да извадите дати или часове в SQL Server, използвайте DATEADD() функция. Необходими са три аргумента. Първият аргумент е единицата дата/час – в нашия пример ние указваме ден мерна единица.
Следва стойност на единицата за дата или час . В нашия пример това е -30 , защото отнемаме 30 дни от текущата дата. Не забравяйте, че минусът означава изваждане стойността; без този знак добавяте към дадена дата.
Последният аргумент е датата, на която работим; това може да бъде колона дата/час/дата и час или всеки израз, който връща дата или час. В нашия пример използваме PurchaseDate , date колона.
Функцията връща променена дата. В нашия пример, заявката за компютър с име 'Dell K80' връща нова дата в BeforePurchaseDate колона. Оригиналната дата '2019-08-30' се променя на датата от преди 30 дни:'2018-07-31' .
Можете да използвате DATEADD() функция за всички типове данни за дата и час.