繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM