午夜的SQL Server时间与时间的比较

时间:2016-12-20 11:46:46

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

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

有人可以在不改变列类型的情况下为此建议解决方法。

感谢。

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

SUMMED = foreach GRP {
     amount = SUM(DATA_TRANSFORMATION.PURCHASE_AMOUNT);
     cnt = COUNT(DATA_TRANSFORMATION.ID);
     generate group, Purchase_Average,Freq_Visits;
}