SQL Server时间跨越午夜的比较

3
我在SQL Server中有一个表,其中存储了Start_Time(时间(7))和End_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 在午夜之后,没有返回任何行数据。我不能使用日期+时间列,因为我将这个 Start_Time 和 End_Time 表作为通用表与另一个表连接以获取我的数据。
有人可以提出不改变列类型的解决方法吗?
谢谢。
2个回答

3

您需要在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

1
你可以比较开始和结束时间,然后将其用于比较逻辑中。
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接