【问题标题】: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`)
如果您有任何疑问,请告诉我?
我附上截图解释.