Опрашивать столбцы даты и времени для «Сейчас» минус определенное количество времени? - PullRequest
9 голосов
/ 29 марта 2011

Есть ли способ в TSQL запрашивать строки, в которых значение столбца datetime равно «сейчас минус (определенное количество времени)», чтобы выбрать временной диапазон?

Например, в MySQL я мог бы построить этокак предикат:

(EndTime BETWEEN NOW() - INTERVAL 2 DAY AND NOW())

Как это можно сделать в TSQL в SQL Server?

Ответы [ 3 ]

16 голосов
/ 29 марта 2011

Вы бы использовали функцию dateadd , например,

where endtime between dateadd(day, -2, getdate()) and getdate()

Поскольку столбец endtime не является параметром функции, оптимизатор запросов может использовать любойиндексы, которые могут быть определены на нем (определение sargable ).

4 голосов
/ 29 марта 2011

Если вы пытаетесь вычесть два дня с сегодняшнего дня, вы можете сделать

DateAdd( d, -2, CURRENT_TIMESTAMP)

DATEADD (Transact-SQL)

3 голосов
/ 29 марта 2011

Вы можете использовать функцию datediff .

Например, чтобы найти вещи, созданные за последние пять минут, вы можете выполнить

select *
from   Table t
where  datediff(minute, t.CreationDate, getutcdate()) <= 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...