gpt4 book ai didi

mysql - 在 2 个日期/日期时间之间获取结果的复杂查询

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

我有这个预订请求:从 13.02.2016 - 09:00h 到 15.02.2016 09:00h 租车 2 天

在确认可用性之前,我想检查我的数据库哪些车会很忙/已经预订了。

我做这个查询:

select id,modelname from res_reservations 
where resnumber!="9915" and datestart > now() and
(datestart BETWEEN "2016-02-13 09:00:00" AND "2016-02-15 09:00:00" or
dateend BETWEEN "2016-02-13 09:00:00" AND "2016-02-15 09:00:00")
order by id ASC

在数据库 res_reservations 中我有以下记录:

#id     #modelname      #datestart              #dateend
9912 Volvo 2016-02-25 11:00:00 2016-02-29 09:30:00
9911 Renault 2016-02-12 19:15:00 2016-02-24 12:00:00
9913 Opel 2016-02-16 12:00:00 2016-02-18 12:00:00

我的查询返回在此期间没有汽车繁忙,但这无效,因为 ID #9911 将在 2016-02-12 19:15:00 - 2016-02-24 12:00:00 之间保留

如何获取该时段内已预订的所有车辆。

感谢您的任何帮助和建议。

澄清一下,我有充分的理由在数据库中搜索预订的汽车,而不是免费的..

最佳答案

你的逻辑不正确。您只检测部分重叠,不允许完全重叠。例如给定新预订的两个日期 A+B,以及数据库中现有的 X+Y 日期,您最终有以下可能性:

           x   y
-------------
1 a b | | - no overlap
2 a b | - b = x
3 a | b | - x < b < y
4 a | b - b = y
5 a | | b - a < x && b > y
6 a b | - full overlap
7 a b - a = x
8 a | b - yada yadayada
9 |a b|
10 | a | b
11 | a b
12 | | a b

您只检查 a 或 b 在 X/Y 日期之间的条件,这并没有涵盖所有可能性,尤其是#5

关于mysql - 在 2 个日期/日期时间之间获取结果的复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35344653/

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