我有一张桌子,里面放着一堆书。客户可以在一天中的任何时间进行预约。我想确保不存在与新预订冲突的预订。
所以我想找到那个日期的预订,并检查开始时间和结束时间是否重叠。我尝试使用子选择查询来获取当天的预订,然后查看这些时间是否重叠,但它似乎没有工作。
这是我正在使用的查询。(状态和活动是我需要的其他一些字段)。我找到相关日期,然后查看上午 8 点是否在这些结果之间,个别开始/结束时间或上午 9.40 是否也在开始/结束时间之间。
SELECT event_date, starttime, endtime, status, active
FROM (SELECT event_date, starttime, endtime, status, active FROM bookings WHERE event_date='2013-07-21' AND status != 'cancelled' AND active !=0 LIMIT 1) AS q1
WHERE ('8:00:00' BETWEEN q1.starttime AND q1.endtime) AND ('9:40:00' BETWEEN q1.starttime AND q1.endtime)
这是最好的使用方法吗?谢谢