我已经搜网了,但还是没有答案。
我正在创建一个酒店房间预订系统。
我的房间可用性查询可以很好地处理这个查询:
SELECT r.roominv_id, r.room_id, m.room_type,r.room_number,r.room_status
FROM roominventory r
INNER JOIN room AS m ON m.room_id = r.room_id
WHERE m.room_type LIKE '%$roomtype%'
AND r.room_status = 'available'
AND r.roominv_id NOT IN (SELECT b.roominv_id
FROM reserve b
WHERE NOT (b.chckout < '$chckin'
OR b.chckin > '$chckout'))我希望2月2日作为下午的开始日期(酒店预订必须始终在中午12点之后开始),2月3日作为我的结束日期(中午12点之前)。
但在我当前的查询中,如果我选择2月2日作为开始日期,2月3日作为结束日期,在数据库中,它将显示为2天的预订。
所以我的问题是:我如何查询客户仍然可以从已经预订的房间中选择结束日期?
我实际上看到了一个站点,它有一个类似于AM/PM http://reservations.directwithhotels.com/reservation/selectDates/148/campaign/ew的日期选择器
但我对javascript太不在行了。
发布于 2013-02-21 23:21:59
根据chckout和chckin的数据类型,您可能只想使用BETWEEN运算符,或者使用包含相等运算符(>=、<=)。
发布于 2013-02-21 23:32:15
我认为您只需要将where子句更改为:
WHERE NOT (b.chckout < '$chckin'
OR b.chckin >= '$chckout')这假设chckin和chckout存储为日期。否则,您需要将它们转换为日期,这取决于数据库。。。以下是一些方法:
date(b.chckin)
cast(b.chckin as date)
trunc(b.chckin)https://stackoverflow.com/questions/15005807
复制相似问题