查询开始和结束日期

时间:2013-02-21 15:20:11

标签: sql date

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

好吧,我正在建立一个酒店房间预订系统。

我的房间可用性查询可以正常使用此查询:

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上这么棒。

2 个答案:

答案 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)