Сравнение времени в 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);