【问题标题】:Complicated Date Range Query in MySQLMySQL中复杂的日期范围查询
【发布时间】:2009-11-13 15:21:25
【问题描述】:

我希望有人可以帮助处理复杂的日期范围 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*)
)

如何在不拉取搜索范围前后的所有内容的情况下包含最后两个?

非常感谢,
克里斯

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

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

    相当于

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

    【讨论】:

    • 太棒了!非常感谢:)
    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 2014-01-07
    • 2011-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多