在mysql中,如何检查两个日期范围是否重叠?如何检查两个日期范围是否在mysql中重叠?
我有这样的:
注:我们有p.date_started <= p.date_finished
但dateA
可以等于dateB
或大于dateB
小于或大于dateB
更大。
CODE:
$query = "SELECT u.first_name, u.last_name, u.avatar_filename, p.id, p.user_id, p.address, p.topic, p.latitude, p.longitude, d.name AS department_name
FROM user u
JOIN placement p ON p.user_id=u.id
JOIN department d ON d.id = u.department_id
WHERE p.active=1 AND (('{$dateA}' BETWEEN p.date_started AND p.date_finished) OR
('{$dateB}' BETWEEN p.date_started AND p.date_finished) OR
(p.date_started BETWEEN '{$dateA}' AND '{$dateB}') OR
(p.date_finished BETWEEN '{$dateA}' AND '{$dateB}'))";
是否有这样做的更好的办法?
谢谢
如果你不知道是之前或B之后,也没有AB是否能够完全嵌入小号挞末或反之亦然,那么我认为这是简单和简单的。 – GolezTrol 2015-02-07 23:25:35
恩,时间是线性的,对吗?事件不能在它开始之前结束! – Strawberry 2015-02-07 23:37:28
我没有说dateA和dateB是一个事件。他们只是两个日期,可以以任何顺序。 – omega 2015-02-08 01:07:42