3

我在 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 表用作通用表,我将其与另一个表连接以获取我的数据。

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

谢谢。

4

2 回答 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
于 2016-12-20T11:49:43.673 回答
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);
于 2016-12-20T11:47:57.963 回答