我有一个存储了许多书籍的表格。顾客可以预约一整天中的任何时间段。我想确保没有已经存在的预约会与新预约冲突。因此,我需要找到该日期上的预约,并检查开始和结束时间是否重叠。我尝试使用子查询来获取当天的预约,然后看看这些时间是否重叠,但似乎不起作用。以下是我正在使用的查询(状态和活动是我需要的其他字段)。我找到相关日期,然后查看8点是否在那些结果的单独开始/结束时间之间或9:40am是否也落在开始/结束时间之间。
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)
这是最好的使用方法吗?谢谢。