特定の日付範囲が別の日付範囲に含まれているか、その上限または下限を包含しているか、または完全にラップしているかを確認する 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 -> 範囲 -> DATE2
開始範囲 -> DATE1 -> DATE2 -> 終了範囲
DATE1 -> 開始範囲 -> DATE2 -> 終了範囲
開始範囲 -> DATE1 -> 終了範囲 -> DATE2
補足として、指定された範囲で + または - 1 日。Straddled は、範囲が停止する最終日 (または翌日) に開始できます。