【问题标题】:Problem on MySQL Query on Between Operator with phpMySQL 查询之间的操作符与 php 的问题
【发布时间】:2019-02-25 06:28:08
【问题描述】:

我有 MySQL 表“room_booking”,该表包含两列“start_time”和“end_time”。我想查看会议室预订的时间。假设如果房间是从下午 2:10 到下午 3:15 预订的。那么此时不应插入另一个条目。 我的查询是

$queryCheck = "SELECT start_time,end_time FROM room_booking AND (SELECT * FROM (room_booking) WHERE (start_time NOT BETWEEN '".$new_start_time."' AND '".$end_start_time."') AND (end_time NOT BETWEEN '".$new_start_time."' AND '".$end_start_time."'))";

【问题讨论】:

    标签: php mysql between difference-between-rows


    【解决方案1】:

    在我看来这只是重叠范围问题,在这种情况下,您希望返回与输入开始和结束时间重叠的记录。试试这个查询:

    SELECT *
    FROM room_booking
    WHERE existing_end < ? OR existing_start > ?;
    

    对于上面的两个? 占位符,您可以按顺序绑定$new_start_time$end_start_time。因此,您最终会得到以下查询:

    SELECT *
    FROM room_booking
    WHERE existing_end > $new_start_time OR existing_start > $end_start_time;
    

    【讨论】:

      【解决方案2】:

      你可以用这个:-

      INSERT INTO `room_booking` (`room`,`start_time`,`end_time`) 
      SELECT 'A','2019-02-25 07:55:00','2019-02-25 08:00:00' FROM `room_booking`
      WHERE NOT EXISTS
          (SELECT * FROM `room_booking` WHERE '2019-02-25 07:55:00' BETWEEN `start_time` AND `end_time`)
      

      如果您有任何疑问,请告诉我?

      我附上截图解释.

      【讨论】:

        猜你喜欢
        • 2014-10-01
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多