我已阅读相关帖子,但尚未找到答案,如果我可以:
我在表格中创建了一个列,如下所示:
[到达]时间非空,
执行这样的查询的最有效方法是什么:
从myTable中选择*“从现在起1小时到达”?
DATEDIFF(小时,GETDATE(),抵达)
给了我一个非常大的价值,可能是因为抵达的1901,0,0日期部分。仍然试图理解这一点,如果有人对我有快速的答案,那将是伟大的。
同样,性能至关重要。
感谢。
答案 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)