You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现娱乐设施预订时间重叠拦截的方案问询

解决娱乐设施预订的日期重叠检测问题

你目前的SQL只能检测新预订完全被已有预订包含的情况,但实际预订重叠有多种场景——比如新预订的结束日期落入已有区间、新预订开始在已有区间内、甚至新预订完全覆盖已有预订,这些都需要拦截。

所有日期区间重叠的核心判断逻辑是:新预订的开始日期 ≤ 已有预订的结束日期,且新预订的结束日期 ≥ 已有预订的开始日期。这个逻辑可以覆盖所有可能的重叠场景,不用拆分多种情况逐一判断。

对应的SQL查询语句应该改成:

SELECT * FROM reservations 
WHERE facility = :facility 
AND :begDate <= endDate 
AND :endDate >= begDate;

逻辑说明

只要新预订的时间区间和已有预订的区间有任何交集,这个查询就会返回对应的已有预订记录:

  • 如果新预订的开始日期在已有区间内,:begDate <= endDate 和 :endDate >= begDate 都会成立
  • 如果新预订的结束日期在已有区间内,同样满足两个条件
  • 如果新预订完全覆盖已有预订,或者完全被已有预订包含,也会触发条件

执行这个查询后,只要结果集不为空,就说明当前设施在目标时间段已有冲突预订,直接阻止新预订即可。

内容的提问来源于stack exchange,提问作者papalatong.dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:01:18