![](/img/trans.png)
[英]mysql date query, can find date between two dates, but not date =
[英]In MySQL can I write a query to find if a given month has any dates between two dates?
关于问题标题的道歉,我很难说清楚。 通过示例更容易:
我有一张桌子,上面有两个日期字段; 开始日期和结束日期。 虚拟数据:
+----+------------+------------+
| 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月的部分介于开始日期和结束日期之间,这很好,我们不需要整个月,部分很好)?
我一直坐在这里试图思考如何编写查询,但完全陷入困境
据我了解,您想检查每个日期范围是否与2012年3月有所重叠。
让
A
是<beginning of march>
和start_date
的最大值,并让
B
是<end of march>
和end_date
的最小值
现在检查A
< B
。
如果您可以使用确切的月份范围(即给出确切的开始结束日期),那么这样的查询应该可以正常工作:
SELECT id FROM MyTable
WHERE start_date <= '2012-03-31'
AND end_date >= '2012-03-01'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.