PHP MySQL 与输入日期相比得到重叠日期
PHP MySQL getting overlapping dates compared to input date
我需要从数据库中获取重叠日期行,其中我输入的开始日期和结束日期与数据库中的任何行重叠。
查询:
SELECT *
FROM dates
WHERE date_from >= $dateFrom
AND date_from >= $dateTill
OR date_till >= $dateFrom
AND date_till <= $dateTill
OR date_from <= $dateFrom
AND date_till >= $dateTill
目前我有一行开始日期:2019-03-11 和结束日期 2019-03-17
此时查询会跳过这些日期:
Beginning: 2019-03-07
End: 2019-03-16
有什么改进查询的想法吗?
试试这个:
SELECT *
FROM dates
WHERE (date_from BETWEEN $dateFrom AND $dateTill)
OR (date_till BETWEEN $dateFrom AND $dateTill)
OR ($dateFrom BETWEEN date_from AND date_end)
在进行一些复杂的逻辑运算时,必须使用括号。
另请参阅逻辑运算符的工作原理:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
select * FROM table_name WHERE (date_from BETWEEN $dateFrom AND $dateTill) OR (date_till BETWEEN $dateFrom AND $dateTill) OR ($dateFrom BETWEEN date_from AND date_end)
我觉得对你有帮助。
我需要从数据库中获取重叠日期行,其中我输入的开始日期和结束日期与数据库中的任何行重叠。
查询:
SELECT *
FROM dates
WHERE date_from >= $dateFrom
AND date_from >= $dateTill
OR date_till >= $dateFrom
AND date_till <= $dateTill
OR date_from <= $dateFrom
AND date_till >= $dateTill
目前我有一行开始日期:2019-03-11 和结束日期 2019-03-17
此时查询会跳过这些日期:
Beginning: 2019-03-07
End: 2019-03-16
有什么改进查询的想法吗?
试试这个:
SELECT *
FROM dates
WHERE (date_from BETWEEN $dateFrom AND $dateTill)
OR (date_till BETWEEN $dateFrom AND $dateTill)
OR ($dateFrom BETWEEN date_from AND date_end)
在进行一些复杂的逻辑运算时,必须使用括号。
另请参阅逻辑运算符的工作原理:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
select * FROM table_name WHERE (date_from BETWEEN $dateFrom AND $dateTill) OR (date_till BETWEEN $dateFrom AND $dateTill) OR ($dateFrom BETWEEN date_from AND date_end)
我觉得对你有帮助。