gpt4 book ai didi

Mysql 查询一个预订是否会与另一个预订冲突。

转载 作者:行者123 更新时间:2023-11-29 01:13:42 25 4
gpt4 key购买 nike

我有一张 table ,上面放着一堆书。客户可以在一天中的任何时间预约。我想确保不存在与新预订冲突的预订。

所以我想找到那个日期的预订,并检查开始时间和结束时间是否重叠。我尝试使用子选择查询来执行此操作以获取当天的预订,然后查看这些时间是否重叠,但它似乎没有用。

这是我正在使用的查询。 (状态和事件是我需要的其他一些字段)。我找到相关日期,然后查看上午 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)

这是最好的使用方法吗?谢谢

最佳答案

要检查一个范围是否与另一个范围重叠,更容易先考虑何时不会重叠,然后反转条件。很明显:

Two ranges (A,B) don't overlap if A starts after B ends, or if A ends before B starts.

将其转换为 SQL,您将获得以下用于查找重叠范围的条件:

... WHERE NOT ('8:00:00' > q1.endtime OR '9:40:00' < q1.starttime)

如果您愿意,可以将其重写为:

... WHERE q1.endtime > '8:00:00' AND q1.starttime < '9:40:00'

这样你就可以处理所有的极端情况,比如一个区间完全包含另一个区间。

关于Mysql 查询一个预订是否会与另一个预订冲突。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17593608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com