Відняти один день від дати


102

У мене є запит на отримання дати, яка відрізняється від 2 datetime як:

SELECT DATEDIFF(DAY, @CreatedDate , GETDATE())

Ex :

SELECT DATEDIFF(DAY, '2013-03-13 00:00:00.000' , GETDATE())

Мені потрібно мати роботу над запитом, яка віднімає день від створеного дня:

SELECT DATEDIFF(DAY, **@CreatedDate- 1** , GETDATE())

1
Чому б просто не додати 1 до результату?
Damien_The_Unbeliever

Якщо відняття 1 з результату дає бажану відповідь, то поставлене вами питання здається неправильним, оскільки віднімання результату є рівнозначним додаванню кількості днів на більш ранню з дат.
Damien_The_Unbeliever

Тоді вираз, який ви опублікували як свою першу відповідь мені, - це те, що я б використовував - ви можете опублікувати його як відповідь, але, як я кажу, це означає, що ваше запитання не є правильним ( DATEDIFFміж 2003-03-12і сьогодні 14 , а не 12).
Damien_The_Unbeliever

Так ... ви маєте рацію .. це працює як навпаки з результатами ..
Джеймс

Відповіді:


124

Спробуйте це

SELECT DATEDIFF(DAY,  DATEADD(day, -1, '2013-03-13 00:00:00.000'), GETDATE())

АБО

SELECT DATEDIFF(DAY,  DATEADD(day, -1, @CreatedDate), GETDATE())

3
Після відповіді від Філіп Рего ви можете використовувати SELECT GETDATE () - 1 для віднімання днів від дати.
Хосе Барбоса

44

Я не впевнений, що саме ви намагаєтеся зробити, але я думаю, що ця функція SQL допоможе вам:

SELECT DATEADD(day,-1,'2013-04-01 16:25:00.250')

Сказане вам дасть 2013-03-31 16:25:00.250 .

Він повертає вас рівно один день і працює у будь-якому стандартному форматі дати чи часу.

Спробуйте запустити цю команду і подивіться, чи дає вона те, що ви шукаєте:

SELECT DATEADD(day,-1,@CreatedDate)

33

Щоб просто відняти один день від сьогоднішньої дати:

Select DATEADD(day,-1,GETDATE())

(використано оригінальну публікацію -7 та було неправильно)


24

Мабуть, ви можете відняти кількість днів, які потрібно від дати.

SELECT GETDATE() - 1

2016-12-25 15:24:50.403




1

Якщо чесно, я просто використовую:

select convert(nvarchar(max), GETDATE(), 112)

що дає YYYYMMDDі мінус один від нього.

Або більш правильно

select convert(nvarchar(max), GETDATE(), 112) - 1 

за вчорашню дату.

Замініть Getdate()своєю цінністюOrderDate

select convert(nvarchar (max),OrderDate,112)-1 AS SubtractDate FROM Orders

повинен це зробити.


-1

Ви можете спробувати це.

Часова позначка = 2008-11-11 13: 23: 44,657;

SELECT DATE_SUB(OrderDate,INTERVAL 1 DAY) AS SubtractDate FROM Orders

вихід: 2008-11-10 13: 23: 44.657

Сподіваюся, це допоможе вирішити вашу проблему.


2
SQL Server. Не підтримує INTERVALабо DATE_SUB.
Damien_The_Unbeliever

ВИБІРТЕ ДАТАТА (день, 45, дата замовлення) З замовлень. Ти маєш це?
Чінтан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.