MySQL 查询预订。如何允许同一日期的两次预订(入住/退房)

标签 mysql sql date datetime

我正在尝试预订两个日期之间的所有房间。
我现在正在使用这个查询,但我遇到了问题。我尝试了很多事情,做了很多搜索,但几个小时后我决定尝试在这里寻求帮助。

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/

相关文章:

mysql - DBMS 如何解决以下查询?

mysql - sequelize 多对多关系

java - SQL 查询模式和相对性能

javascript - 为什么 new Date(dateString) 在具有完全相同输入的不同设备上返回两个不同的日期?

javascript - 无法在 Chart.js 时间轴上显示正确的时间

php - ilias LMS 的自定义报告

php mail() 发送多封重复邮件

sql - 按时间间隔(例如天)和总持续时间对时间序列进行分组

sql - 如何在不使用 Oracle 中的 TRUNC 的情况下获取天数

javascript - 我可以在 JavaScript 中判断访问者的区域设置是遵循美国风格还是世界其他地区的风格吗?