определить диапазон дат попадает между другой диапазон дат в SQL
Я пытаюсь выяснить, есть ли способ в sql (предпочтительный T-sql) определить, попадает ли диапазон дат между другим диапазоном дат.
для целей моего примера: daterange1 = у меня есть определенный диапазон дат, даты: 1/1/2012-1/5/2012 daterange2 = у меня есть две другие даты для работы, скажем, 1/3/2012 и 1/4/2012
Я пытаюсь использовать это в операторе CASE для чего-то вроде этого
CASE
WHEN daterange1 = 0 then result1
WHEN daterange2 falls within daterange1 then result2
END as datestuff
возможно ли это в SQL? Я действительно поставленный в тупик, я знаю, как выяснить, попадает ли одна дата между диапазоном, но как это можно сделать с диапазоном дат? ответ не обязательно должен быть в заявлении CASE, но он предпочтителен.
2 ответов
как вы можете получить daterange1 = 0
, так как это диапазон, то есть 2 значения?
правильный тест для перекрывающихся дат
CASE WHEN @range1start <= @range2end
and @range2start <= @range1end THEN 1 ELSE 0 END
Если вы имеете в виду, что daterange2 должен полностью подпадать под daterange1, то
CASE WHEN @range1start <= @range2start
and @range2end <= @range1end THEN 1 ELSE 0 END
выберите * из t где (beginningdate между startdate и closedate Или окончание между startdate и closedate Или (beginningdate = closedate));