在MySQL中,我可以编写一个查询来查找给定月份是否在两个日期之间有任何日期?

时间:2012-08-05 11:42:59

标签: mysql

对问题标题道歉我很难说明这一点。通过示例更容易:

我有一个包含两个日期字段的表; start_date和end_date。虚拟数据:

+----+------------+------------+
| id | start_date | end_date   |
+----+------------+------------+
| 1  | 2012-01-10 | 2012-04-13 |
| 2  | 2012-02-09 | 2012-05-12 |
| 3  | 2012-03-08 | 2012-06-11 |
| 4  | 2012-04-07 | 2012-07-10 |
| 5  | 2012-05-06 | 2012-08-09 |
+----+------------+------------+

所以现在我有一个月,比如说2012年3月。有没有办法看看2012年3月是否属于id_ 2的start_date和end_date?怎么样3(3有点不同,因为2012年3月的部分介于start_date和end_date之间,这很好,我们不需要整个月,部分都很好)?

我一直坐在这里试图想出如何写一个查询而且完全难倒

2 个答案:

答案 0 :(得分:2)

据我了解你的问题,你想检查每个日期范围是否与2012年3月有一些重叠。

  • A<beginning of march>start_date的最大值,让

  • B是最低<end of march>end_date

现在检查是否A&lt; B

答案 1 :(得分:2)

如果你可以使用确切的月份范围(即给出开始结束日的确切日期),那么这样的查询应该可以正常工作:

SELECT id FROM MyTable 
WHERE start_date <= '2012-03-31' 
AND end_date >= '2012-03-01'