我正在尝试预订两个日期之间的所有房间。
我现在正在使用这个查询,但我遇到了问题。我尝试了很多事情,做了很多搜索,但几个小时后我决定尝试在这里寻求帮助。
SELECT 1 FROM reservations WHERE
checkin <= '$check_out' AND checkout >= '$check_in'
假设有人在 21 日至 22 日预订。
他于21日下午4:00入住,并于22日中午12:00退房
21日下午4:00前房间仍有空
22日中午12:00后房间仍有空
通过此查询,我无法预订 20 日至 21 日
20 日下午 4:00 入住,21 日中午 12:00 退房
我也无法预订 22 日至 23 日。
知道如何调整查询以反射(reflect)现实吗?
还有一个查询:
(checkin <= '$check_in' AND checkout >= '$check_in') OR
(checkin <= '$check_out' AND checkout >= '$check_out') OR
(checkin >= '$check_in' AND checkout <= '$check_out')
你可以引用这个问题,这是我的疑问: Checking for date range conflicts in MySQL
非常感谢!
最佳答案
@georstef 向我发布了此链接,看看它对我的问题下面的评论是否有帮助:Using MySQL query in selecting room availability
确实如此!
正确的 WHERE 子句现在如下:
(checkin <= '$check_in' AND checkout >= '$check_in') OR
(checkin < '$check_out' AND checkout >= '$check_out') OR
(checkin >= '$check_in' AND checkout < '$check_out')
谢谢!
关于MySQL 查询预订。如何允许同一日期的两次预订(入住/退房),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23955445/