MySQL中的复杂日期范围查询

时间:2009-11-13 15:21:26

标签: mysql

我希望有人可以帮助处理复杂的日期范围SQL查询。

我需要找到一大堆可能的记录: 1)在搜索日期范围内
2)在搜索范围之外但是经过它 3)在搜索范围的左侧,从之前开始但在其结束期间结束 4)在搜索范围之外,从开始到结束之后。

这比我想象的要复杂得多!

到目前为止,我已经捕获了前两个。

AND (
  (event_dates.date_start <= *startdate* AND event_dates.date_end >= *enddate*)
  OR (event_dates.date_start >= *startdate* AND event_dates.date_end <= *enddate*)
)

如何在搜索范围之前和之后不包括所有内容的情况下包括最后两个?

非常感谢,
克里斯

1 个答案:

答案 0 :(得分:4)

如果您想要所有可能触及日期范围的记录,那么您只想排除在范围结束后开始或在范围开始之前结束的记录:

NOT (date_start > *enddate* or date_end < *startdate*)

这相当于

date_start <= *enddate* and date_end >= *startdate*