【问题标题】: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)
    

    【讨论】:

    • 谢谢。 datepart 是我缺少的元素。
    猜你喜欢
    • 2013-09-16
    • 2013-06-28
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2016-10-08
    • 2016-07-24
    • 2021-10-03
    相关资源
    最近更新 更多