Сравнение времени в SQL Server со временем за полночь

У меня есть таблица в 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 больше полуночи, он не возвращает ни одной строки. Я не могу использовать столбец Date + Time, так как я использую эту таблицу Start_Time и End_Time в качестве общей таблицы, к которой я присоединяюсь с другой таблицей для получения своих данных.

Может кто-нибудь предложить обходной путь без изменения типа столбцов.

Благодарю.

2 ответа

Решение

Вы должны включить эту опцию на 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

Вы можете сравнить время начала и окончания, а затем использовать это в логике сравнения:

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);
Другие вопросы по тегам