在PHP / MySQL中预订日期可用性范围

时间:2013-01-10 14:26:36

标签: php mysql date between

我有两个字段,check_in和night。

夜晚包含check_in日期。因此,如果客户预订1晚,他会在第二天检查,然后可以预订房间(除非已经由其他人预订)。

以下是我桌子中几条记录的示例

customer          room            check_in            nights
cus1              test room       2013-01-23          2
cus2              test room       2013-01-25          1
cus3              test room       2013-01-26          4

cus3预订了房间,他们将在2013-01-26进入房间,他们将入住4晚。这意味着在此期间房间将无法预订。

那我该怎么检查房间是否可用?

该房间仅适用于2013-01-30的check_in。

感谢所有帮助:)

4 个答案:

答案 0 :(得分:0)

获取客户行的数据时,请使用此数据来获取结帐日期:

$check_out = date('Y-m-d', strtotime($row['check_in'].' + '.$row['nights'].' days'));

答案 1 :(得分:0)

这样的事,

SELECT room, 
       CASE WHEN 'dateHere' BETWEEN check_in AND check_out
           THEN 'UNAVAILABLE'
           ELSE 'AVAILABLE'
       END Status
FROM
  (
      SELECT  room, 
              check_in, 
              DATE_ADD(check_in, INTERVAL nights day) check_out
      FROM    booking
  ) s

答案 2 :(得分:0)

有一个很棒的网站,其中包含常见方案的MySQL语句列表。检查某个房间是否在特定时间段内可用是其中之一:http://www.artfulsoftware.com/infotree/queries.php#576

答案 3 :(得分:0)

当您选择入住日期和夜晚时,您可以执行以下操作(虚拟代码):

    $startDate='2013-01-26';//for example
    $to_time=date("Y-m-d", strtotime("$startDate + 4 day"));
    echo $to_time;//prints 2013-01-30