[英]Query to return available hotel rooms 3 days earlier or later than a specified range
我想返回酒店预订系统中的可用房间。 查询应返回比指定日期范围早或晚 3 天的结果。
数据库结构:
房间表(RoomID、RoomType、BedsNo、ViewAvailable...) 预订表(ReservationID、RoomID、CheckinDate、CheckoutDate...)
我正在使用以下查询返回指定日期范围内的可用房间:DateFrom 和 DateTo。 但是,如何返回比日期范围 DateFrom 和 DateTo 早或晚 3 天的结果。
select * from room
where room.roomId not in
(select reservation.roomId from reservation where
(reservation.check_in_date <= `FromDate` AND reservation.check_out_date >= `ToDate`)
OR (reservation.check_in_date < `FromDate` AND reservation.check_out_date >= `ToDate`)
OR (`FromDate` <= reservation.check_in_date AND `ToDate` >= reservation.check_out_date))
你不能通过类似的方式为FromDate
和ToDate
添加 3 天
[...]
where reservation.check_in_data <= date_sub(FromDate, interval 3 day)
and reservation.check_out_date >= date_add(ToDate, interval 3 day)
[...]
使用间隔
select * from room
where room.roomId not in
(select reservation.roomId from reservation where
(reservation.check_in_date <= `FromDate` - INTERVAL 3 DAY AND reservation.check_out_date >= `ToDate` + INTERVAL 3 DAY)
OR (reservation.check_in_date < `FromDate` - INTERVAL 3 DAY AND reservation.check_out_date >= `ToDate` + INTERVAL 3 DAY)
OR (`FromDate` - INTERVAL 3 DAY <= reservation.check_in_date AND `ToDate` + INTERVAL 3 DAY >= reservation.check_out_date))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.