Проблем:
Искате да получите датата 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()
функция за всички типове данни за дата и час.