我有一个包含多个合同的表,每个合同都有一个开始日期和一个结束日期,如下所示:
| 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 |
我要做的是构建一个查询,该查询将检索在特定时间段之间处于活动状态的合同。因此,如果我有开始日期2012-02-10
和结束日期,2012-03-21
我应该显示以下合同:
| 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'
但这不起作用,不会检索任何记录。我究竟做错了什么?