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

PHP/MySQL中的预订日期可用范围,php,mysql,date,between,Php,Mysql,Date,Between,我有两个字段,签入和夜间 住宿包括入住日期。因此,如果客户预订了一晚,他会在第二天退房,然后房间就可以预订了(除非已经被其他人预订了) 下面是我的表中的一对记录的示例 customer room check_in nights cus1 test room 2013-01-23 2 cus2 test room 2013-01-25

我有两个字段,签入和夜间

住宿包括入住日期。因此,如果客户预订了一晚,他会在第二天退房,然后房间就可以预订了(除非已经被其他人预订了)

下面是我的表中的一对记录的示例

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年1月30日入住


非常感谢所有帮助:)

当您获取客户行的数据时,使用此选项获取退房日期:

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

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

    • 有一个很棒的站点,其中列出了常见场景的MySQL语句列表。检查房间在给定时间段内是否可用是其中之一:

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


      是否要检查该房间下一次何时可用(例如,从当前日期开始)?或者您想检查房间是否在给定日期内可用?@StephenBooher我想通过给定日期,如果可能,如果房间可用,则返回true,如果房间不可用,则返回false。这几乎是完美的,我忘了添加我将发送日期和请求的夜数。因此,如果x date可用于x数量的nightscould,请给出一个示例(使用我提供的现有数据作为示例)。客户希望在2013年1月21日预订房间并入住,他们希望入住4天。他们应该无法预订房间,因为在该范围内已有预订。您如何利用此查询创建存储过程,我没有创建存储过程的权限我不认为:(.再看看你的例子,如果有数千个预订,它看起来会返回每一行,我只希望它返回“测试室”是否可用。我有一个房间列表,比如说,1号房间、2号房间、3号房间、4号房间。我需要返回列表中在给定日期和晚上可用的房间。
          $startDate='2013-01-26';//for example
          $to_time=date("Y-m-d", strtotime("$startDate + 4 day"));
          echo $to_time;//prints 2013-01-30