SQL Date Range仅显示过去一小时的数据

smr*_*mr5 0 sql-server range

我想做一个mssql日期范围来返回一小时时间范围内的数据.意思是,我想返回最后一小时的数据,但不是当前时间的最后一小时.

Declare @today datetime
set @today=GETDATE()
select *  from table1  where
datetime>= DATEADD(hh,-2,@Today)
Run Code Online (Sandbox Code Playgroud)

例如,当前时间是11:50:00 am我希望查询在上午10:00:00到10:59:00之间返回所有数据我的变量不能是静态的.我希望它是动态的,所以不管我一天中的哪个时间运行查询它只返回最后一小时的数据,无论现在是什么时候.所以它可能是在上午11:00到上午11:59:00之间的任何时间,我仍然希望结果从上午10点到上午10:59返回数据

谢谢

Aar*_*and 8

这是一个稍微简单的方法:

DECLARE @d SMALLDATETIME;

SELECT @d = DATEADD(HOUR, DATEDIFF(HOUR, '20000101', GETDATE()) - 1, '20000101');

SELECT @d;
Run Code Online (Sandbox Code Playgroud)

现在您可以@d在查询中使用,例如

WHERE col >= @d AND col < DATEADD(HOUR, 1, @d);
Run Code Online (Sandbox Code Playgroud)

这是一个开放日期范围.请不要考虑范围的"结束"或将此视为BETWEEN查询.BETWEEN 10:00 AND 10:59这不是一个非常明智的方法,因为你可能会错过来自的数据10:59:00.003 -> 10:59:59.997.关于为什么BETWEEN是邪恶的背景信息.