【问题标题】:SQL Server 2008 - Compare time column to current DateTimeSQL Server 2008 - 将时间列与当前日期时间进行比较
【发布时间】:2012-01-20 23:01:54
【问题描述】:
我已经阅读了相关帖子,但还没有找到答案,如果可以的话:
我在表中创建了一个列,如下所示:
[到达]时间不为空,
执行这样的查询最有效的方法是什么:
select * from myTable where "Arrival is 1 hours from now" ?
DATEDIFF(小时, GETDATE(), 到达)
给了我一个非常大的值,这可能是因为到达的 1901,0,0 日期部分。仍在尝试理解这一点,所以如果有人能快速回答我,那就太好了。
再次强调,性能至关重要。
谢谢。
【问题讨论】:
标签:
sql-server-2008-r2
datetime-comparison
【解决方案1】:
我可能会做类似...的事情
select >>select list<<
from table
where datediff(minute, getdate(), [Arrival]) < 60
或者,使用你的时间
select >>select list<<
from table
where datediff(hour, getdate(), [Arrival]) < 1
edit:另外,如果性能很关键,那么我还建议验证输入以不允许古老的日期。如果您有不依赖于年份甚至月份的重复计划(本质上,您只是在寻找小时和分钟),那么使用 DatePart 是合适的。
select ____
from [table]
where (((datepart(hour, getdate()) = datepart(hour, [Arrival])) AND (datepart(minute, [Arrival]) - datepart(minute, getdate()) < 60)