Я пытаюсь найти SQL-запрос, который будет проверять, находится ли данный диапазон дат в другом, или охватывает его верхнюю или нижнюю границу, или полностью обертывает его. Сейчас у меня есть 3 отдельных запроса, но я уверен, что их можно упростить.Диапазон дат в пределах диапазона и более
Любые предложения?
SELECT * FROM TABLE
WHERE
-- SURROUNDING
(DATE1 <= START_DT - 1 DAY AND DATE2 >= END_DT + 1 DAY)
-- ENCOMPASSED
OR(DATE1 >= START_DT AND DATE2 <= END_DT)
-- STRADDLED
OR(DATE1) BETWEEN START_DT AND END_DT
OR (DATE2) BETWEEN START_DT AND END_DT
DATE1 -> RANGE -> DATE2
START RANGE -> DATE1 -> DATE2 -> END RANGE
DATE1 -> START RANGE -> DATE2 -> END RANGE
ДИАПАЗОН ДИАПАЗОНА -> ДАТА1 -> КОНЕЦ ДИАПАЗОН -> ДАТА2
И как примечание + или - один день на данном диапазоне; Straddled может начать последний день (или на следующий день после) остановки диапазона и т. д.
Опубликуйте свои текущие запросы, чтобы показать, что вы пробовали. – Yaroslav