0

我已经搜查了网络,但仍然没有答案。

嗯,我正在创建一个酒店房间预订系统。

我的房间可用性查询适用于此查询:

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很陌生。

4

2 回答 2

0

根据 and 的数据类型chckoutchckin您可能只想使用BETWEEN运算符,或使用包含相等运算符 ( >=, <=)。

于 2013-02-21T15:21:59.497 回答
0

我认为您只需将where条款更改为:

WHERE NOT (b.chckout < '$chckin'
                              OR b.chckin >= '$chckout')

这假定 chckin 和 chckout 存储为日期。否则,您需要将它们转换为日期,这取决于数据库。. . 这里有一些方法:

date(b.chckin)
cast(b.chckin as date)
trunc(b.chckin)
于 2013-02-21T15:32:15.427 回答