当 start_date 和 end_date 期间完全或部分落在日期范围内时,我尝试返回 MySQL 行。
这是我目前正在使用的 SQL。
SELECT
start_date,
end_date,
id
FROM
employee_leave
WHERE
DATE(start_date) >= :start_date_range
AND DATE(end_date) <= :end_date_range;
这可以很好地返回完全位于指定范围内的行,但它也需要返回部分位于该范围内的行。
例如, 开始日期范围 = 2015-07-04 end_date_range = 2015-07-15
如果我有以下行,它们应该全部返回:
- 开始日期 = 2015-07-05,结束日期 = 2015-07-10
- 开始日期 = 2015-07-01,结束日期 = 2015-07-10
- 开始日期 = 2015-07-01,结束日期 = 2015-07-20
- 开始日期 = 2015-07-11,结束日期 = 2015-07-20
最佳答案
SELECT
start_date,
end_date,
id
FROM
employee_leave
WHERE
(DATE(start_date) >= :start_date_range AND DATE(start_date) <= :end_date_range)
OR
(DATE(end_date) >= :start_date_range AND DATE(end_date) <= :end_date_range);
关于mysql - 如何返回日期范围落在日期范围内的 SQL 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31647506/