我有一个包含多个契约(Contract)的表,每个契约(Contract)都有一个开始日期和一个结束日期,如下所示:
| ID | Contract Name | Start Date | End Date |
|-------|-------------------|--------------|------------|
| 1 | Joe Bloggs | 2012-01-01 | 2012-02-05 |
| 2 | John Smiths | 2012-02-01 | 2012-02-20 |
| 3 | Johnny Briggs | 2012-03-01 | 2012-03-20 |
我想做的是构建一个查询,以检索在特定时间段内有效的契约(Contract)。因此,如果我有 2012-02-10
的开始日期和 2012-03-21
的结束日期,我应该显示以下契约(Contract):
| ID | Contract Name | Start Date | End Date |
|-------|-------------------|--------------|------------|
| 2 | John Smiths | 2012-02-01 | 2012-02-20 |
| 3 | Johnny Briggs | 2012-03-01 | 2012-03-20 |
但我的问题是我不知道如何构建查询来执行此操作。这是我到目前为止所得到的:
SELECT *
FROM contracts c
WHERE c.startdate BETWEEN '2012-02-10'
AND '2012-03-21'
AND c.enddate BETWEEN '2012-02-10'
AND '2012-03-21'
但这不起作用,没有检索到任何记录。我做错了什么?
最佳答案
SELECT * FROM contracts
WHERE (START_DATE between '2012-03-01' AND '2013-03-21')
OR (END_DATE between '2012-03-01' AND '2013-03-21')
OR (START_DATE<= '2012-03-01' AND END_DATE >='2013-03-21');
关于mysql - 检索MySQL中特定日期范围内发生的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15521175/