パラメータとして指定された開始日と終了日の間にあるイベントを取得する次のクエリがあります。
SELECT * FROM events
WHERE (startDate BETWEEN CAST(@start AS DATETIME) AND CAST(@end AS DATETIME)
OR endDate BETWEEN CAST(@start AS DATETIME) AND CAST(@end AS DATETIME))
これは、開始時刻と終了時刻が重なっているイベントを取得する場合には問題なく機能しますが、これらの時刻の間に完全にカプセル化されたイベントは取得できません。写真はこれをより明確にするかもしれません:
Event A
|------------------------------------------------------------------|
Event B
----------------------|------------|-------------------------------
Where | represents a start or end date
私の図では、イベント B の開始時間と終了時間でクエリを使用すると、イベント A は取得されません。
重複してカプセル化されたすべてのイベントを表示するようにクエリを変更するにはどうすればよいですか?