我已经搜查了网络,但仍然没有答案。
好吧,我正在建立一个酒店房间预订系统。
我的房间可用性查询可以正常使用此查询:
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日作为startdate而2月3日作为enddate,则在数据库中,它将显示为2天预订。
所以我的问题是: 我如何查询客户仍然可以从已预订的房间中选择结束日期?
我实际上看到一个网站上有一个类似AM / PM http://reservations.directwithhotels.com/reservation/selectDates/148/campaign/ew的日期选择器
但是我在javascript上这么棒。
答案 0 :(得分:0)
您可能只想使用chckout
运算符,或使用包含等式运算符(chckin
,{{1 }})。
答案 1 :(得分:0)
我认为您只需要将where
子句更改为:
WHERE NOT (b.chckout < '$chckin'
OR b.chckin >= '$chckout')
这假设chckin和chckout存储为日期。否则,您需要将它们转换为日期,这取决于数据库。 。 。这里有一些方法:
date(b.chckin)
cast(b.chckin as date)
trunc(b.chckin)