识别 MySQL 中的重叠日期范围
问题:
让我们考虑一个存储的表活动会话及其各自的开始和结束日期。我们的目标是确保会议之间不存在冲突。具体来说,我们希望在尝试在给定日期范围内插入新会话时找到重叠的会话。
查询:
为了识别潜在的冲突,我们可以利用以下查询:
SELECT * FROM session WHERE "2010-01-05" BETWEEN start_date AND end_date OR "2010-01-25" BETWEEN start_date AND end_date OR "2010-01-05" >= start_date AND "2010-01-25" <= end_date;
理解查询:
此查询检查指示潜在重叠的三个条件:
替代方法:
保证准确结果的替代查询:
SELECT * FROM session WHERE new_start < existing_end AND new_end > existing_start;
解释:
此查询利用基于四个的逻辑评估变量:
如果新会话的开始日期早于任何现有会话的结束日期,则查询将返回重叠会话,并且新会话的结束日期晚于任何现有会话的开始日期。
以上是如何识别 MySQL 中重叠的日期范围?的详细内容。更多信息请关注PHP中文网其他相关文章!