Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择月份介于开始日期和结束日期之间的行的更好方法_Mysql_Where - Fatal编程技术网

Mysql 选择月份介于开始日期和结束日期之间的行的更好方法

Mysql 选择月份介于开始日期和结束日期之间的行的更好方法,mysql,where,Mysql,Where,假设要考虑的月份是2013年10月,我想把2013年10月在开始日期和结束日期之间的所有行都拉出来 我目前正在我的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

假设要考虑的月份是2013年10月,我想把2013年10月在开始日期和结束日期之间的所有行都拉出来

我目前正在我的
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
其中(开始日期>='2013-10-01'和结束日期<'2013-11-01')或//介于1日和31日之间
(开始日期>='2013-10-01'和开始日期<'2013-11-01')或//开始日期在2013年10月
(结束日期>='2013-10-01'和结束日期<'2013-11-01')//结束日期在2013年10月
这几乎是在开始和结束日期不在2013年10月的情况下完成的工作。例如,它将错过开始日期为
2013-05-01
和结束日期为
2014-02-22


我相信在
WHERE
中使用的方法会比我目前采用的长方法短而漂亮。有什么建议吗?

关于
在哪里开始日期<'2013-11-01'和结束日期>='2013-10-01'
添加一个或多个

WHERE (start_date >= '2013-10-01' AND end_date <= '2013-10-31') OR
    (start_date < '2013-10-01' AND end_date > '2013-10-31')
其中(开始日期>='2013-10-01'和结束日期'2013-10-31')

我不清楚应该返回哪些值。你是说返回所有在10月份开始或结束的记录?还是在10月之前开始并在10月之后结束的记录?也许你可以提供一些例子。@DBC:如果你认为有一个合适的答案,请把它标记为正确答案。我做了。可悲的是,由于声誉的限制,我无法提高投票率。+1最简单。如果它在月底之前开始,在月初之后结束,轰!对每种情况都检测到重叠。