【问题标题】:SQL Server Time Comparison with Time over midnightSQL Server 时间与午夜时间的比较
【发布时间】:2016-12-20 11:46:45
【问题描述】:

我在 SQL Server 中有一个存储 Start_Time (Time (7)) 和 End_Time (Time (7)) 的表。

里面存储的值是

                  Start_Time        End_Time
                  15:00:00.0000000  01:00:00.0000000

我有一个查询应该返回这一行:

                 Select * from Table Where MyTime >= Start_Time and MyTime < 
                  End_Time

对于 MyTime 值 = 16:00:00,这应该返回一行。但由于 End_Time 是在午夜之后,它不会返回任何行。我无法使用 Date + Time 列,因为我将此 Start_Time 和 End_Time 表用作通用表,我将其与另一个表连接以获取我的数据。

有人可以在不改变列类型的情况下提出解决方法吗?

谢谢。

【问题讨论】:

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


    【解决方案1】:

    您需要在 WHERE 子句中包含此选项:

    Select *
    from Table
    Where (Start_Time > End_time AND myTime >= start_time) -- Answer your case
       OR MyTime between start_time and end_time -- All the rest
    

    【讨论】:

      【解决方案2】:

      您可以比较开始时间和结束时间,然后在比较逻辑中使用它:

      Select t.*
      from Table t
      Where (Start_time <= End_time and MyTime >= Start_Time and MyTime <  End_Time) or
            (Start_time > End_time and MyTime < Start_Time and MyTime >=  End_Time);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        • 2011-05-27
        • 2016-11-17
        相关资源
        最近更新 更多