查询“现在”的日期时间列减去一定的时间?

时间:2011-03-29 19:11:38

标签: sql-server tsql

TSQL中是否有办法查询日期时间列的值为“现在减去(一定时间)”的行来选择时间范围?

例如在MySQL中,我可以构建这样的谓词:

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

如何在SQL Server中的TSQL中完成此操作?

3 个答案:

答案 0 :(得分:16)

您可以使用 dateadd 功能,例如

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

因为列endtime不是函数参数,所以查询优化器可以使用可能在其上定义的任何索引(sargable的定义)。

答案 1 :(得分:4)

如果你想从今天开始减去两天,你可以

DateAdd( d, -2, CURRENT_TIMESTAMP)

DATEADD (Transact-SQL)

答案 2 :(得分:3)

您可以使用datediff功能。

例如,要查找最近五分钟内创建的内容,您可以执行

select *
from   Table t
where  datediff(minute, t.CreationDate, getutcdate()) <= 5