我有以下查询,它将检索作为参数提供的开始日期和结束日期之间的事件:
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。
如何更改查询以显示所有重叠和封装的事件?