Подтвердить что ты не робот

Определить, находится ли диапазон дат между другим диапазоном дат - 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, но он предпочтителен.

4b9b3361

Ответ 1

Как вы можете получить daterange1 = 0, так как это диапазон, т.е. 2 значения?

Правильный тест для перекрывающихся дат

CASE WHEN @range1start <= @range2end
      and @range2start <= @range1end THEN 1 ELSE 0 END

Если вы имеете в виду, что daterange2 должен упасть ENTIRELY внутри daterange1, тогда

CASE WHEN @range1start <= @range2start
      and @range2end <= @range1end THEN 1 ELSE 0 END

Ответ 2

выберите * от t где (начало отсчета между стартовым и закрытым ИЛИ заканчивается с даты начала и закрытия OR (begindate < startdate и enddate >= closedate));