0

我已经阅读了相关的帖子,但还没有找到答案,所以如果可以的话:

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

[到达] 时间 NOT NULL,

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

select * from myTable where "Arrival is 1 hours from now" ?

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

给我一个非常大的价值,可能是因为到达的 1901,0,0 日期部分。仍然试图理解这一点,所以如果有人能快速回答我,那就太好了。

同样,性能至关重要。

谢谢。

4

1 回答 1

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)
于 2012-01-20T23:05:12.393 回答