2013-02-21 77 views
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日作为startdate,2月3日作为enddate,则在数据库中,它将显示为2天预约。

所以我的问题是: 我将如何查询客户仍然可以从已经预订的房间中选择结束日期?

我居然看到了一个网站,有有几分像AM/PM http://reservations.directwithhotels.com/reservation/selectDates/148/campaign/ew

一个datepicker,但我因此在JavaScript的小白。

回答

0

根据为chckoutchckin您的数据类型,你可能只是想用BETWEEN操作,或者使用含相等运算符(>=<=)。

0

我想你只需要到where条款改为:

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

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

date(b.chckin) 
cast(b.chckin as date) 
trunc(b.chckin) 
相关问题