SQL Server 2008 - 将时间列与当前DateTime进行比较

时间:2012-01-20 23:01:55

标签: sql-server-2008-r2 datetime-comparison

我已阅读相关帖子,但尚未找到答案,如果我可以:

我在表格中创建了一个列,如下所示:

  

[到达]时间非空,

执行这样的查询的最有效方法是什么:

从myTable中选择*“从现在起1小时到达”?

  

DATEDIFF(小时,GETDATE(),抵达)

给了我一个非常大的价值,可能是因为抵达的1901,0,0日期部分。仍然试图理解这一点,如果有人对我有快速的答案,那将是伟大的。

同样,性能至关重要。

感谢。

1 个答案:

答案 0 :(得分:2)

我可能会做类似......

select >>select list<<
from table
where datediff(minute, getdate(), [Arrival]) < 60

或者,使用你的小时

select >>select list<<
from table
where datediff(hour, getdate(), [Arrival]) < 1

编辑:此外,如果表现很关键,那么我还建议验证输入不允许古代日期。如果您的定期时间表不依赖于年份,甚至是月份(实际上,您只是在寻找小时和分钟),那么使用DatePart是合适的。

select ____
from [table]
where (((datepart(hour, getdate()) = datepart(hour, [Arrival])) AND (datepart(minute, [Arrival]) - datepart(minute, getdate()) < 60)