0

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

我有一个包含两个日期字段的表格;开始日期和结束日期。虚拟数据:

+----+------------+------------+
| 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 之间,这很好,我们不需要整个月,部分很好)?

我一直坐在这里试图思考如何编写查询并且完全被难住了

4

2 回答 2

2

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

  • A是和的最大值<beginning of march>并且start_date

  • B是和的<end of march>最小值end_date

现在检查是否A< B

于 2012-08-05T11:49:09.180 回答
2

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

SELECT id FROM MyTable 
WHERE start_date <= '2012-03-31' 
AND end_date >= '2012-03-01' 
于 2012-08-05T11:50:25.543 回答