我有一个包含开始日期和结束日期列的 SQL 表。我有一个用例,其中用户将有一个下拉选项 [周一至周日和每日]。因此,每当用户点击特定日期时,查询都应返回该特定日期在开始日期和结束日期之间的所有记录。
示例:如果用户在下拉列表中选择星期一,那么我需要表中基于开始日期和结束日期列的特定日期范围内星期一的所有记录。
样本输入
开始日期:2021-06-20
结束日期:2021-06-30
选项:今天
课程表
|开始日期 |结束日期 |
| ------------- |:------------:|
| 2021-06-21 | 2021-06-21 |
| 2021-06-22 | 2021-06-22 |
| 2021-06-23 | 2021-06-23 |
如果将样本输入应用于上表,则结果应如下所示。
预期结果
|开始日期 |结束日期 |
| ------------- |:------------:|
| 2021-06-21 | 2021-06-21 |
查询:以下查询将检索指定日期范围之间的所有记录。在下面给定的日期范围中有一个星期一,因此预期输出将记录在 2021-06-21,因为它是给定日期范围内唯一的星期一。
SELECT * FROM courses
WHERE ((start_date BETWEEN '2021-06-20' AND '2021-06-30')
OR (end_date BETWEEN '2021-06-20' AND '2021-06-30'));
当前结果:
|开始日期 |结束日期 |
| ------------- |:------------:|
| 2021-06-21 | 2021-06-21 |
| 2021-06-22 | 2021-06-22 |
| 2021-06-23 | 2021-06-23 |
当前结果基于上述 SQL 查询。