更好的方法是选择一个月在开始日期和结束日期之间的行

时间:2013-11-09 10:32:04

标签: mysql where

假设要考虑的月份为Oct 2013,我想提取October 2013落在开始日期和结束日期之间的所有行。

我目前正在我的WHERE子句中使用它:

WHERE (start_date >= '2013-10-01' AND end_date < '2013-11-01') OR // between 1st and 31st
      (start_date >= '2013-10-01' AND start_date < '2013-11-01') OR // start falls in oct'13
      (end_date >= '2013-10-01' AND end_date < '2013-11-01') // end falls in oct'13

在开始和结束日期超出Oct'13的情况下,这几乎可以完成工作。例如,它会错过开始日期为2013-05-01且结束日期为2014-02-22

的行

我确信在WHERE中使用短暂而美观的方式,而不是我目前正在遵循的漫长方法。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

WHERE start_date < '2013-11-01' And end_date >= '2013-10-01'

怎么样?

答案 1 :(得分:0)

再添加一个OR

WHERE (start_date >= '2013-10-01' AND end_date <= '2013-10-31') OR
    (start_date < '2013-10-01' AND end_date > '2013-10-31')