如何在预定的事件之间为设定的日期和时间创建查询开放时间段?

yvfmudvl  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(176)

我试图创建一个查询来列出特定日期的开放时间段。我在这里发现了许多类似的问题,但似乎没有一个答案能起作用。
我的预约表的简化版本:
表名:app\u bookings(输出前)

CREATE TABLE `app_bookings` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`client_id` INT(11) NOT NULL DEFAULT '0',
`provider_id` INT(11) NOT NULL DEFAULT '0',
`doctor_id` INT(11) NOT NULL DEFAULT '0',
`department_id` INT(11) NOT NULL DEFAULT '0',
`date` DATE NOT NULL,
`StartTime` DATETIME NULL DEFAULT NULL,
`EndTime` DATETIME NULL DEFAULT NULL,
`duration` INT(11) NOT NULL,
`payment` VARCHAR(50) NOT NULL,
`created_by` INT(11) NOT NULL,
`updated_by` INT(11) NOT NULL,
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)

);

INSERT INTO `app_bookings` ( `client_id`, `provider_id`, `doctor_id`, `department_id`, `date`, `StartTime`, `EndTime`, `duration`, `payment`, `created_by`, `updated_by` ) VALUES
 ( 1, 3, 11, 1, '2018-10-21', '2018-10-21 10:15:00', '2018-10-21 11:00:00', 0, '', 0, 0 ),
 ( 1, 3, 11, 1, '2018-10-21', '2018-10-21 11:15:00', '2018-10-21 13:00:00', 0, '', 0, 0 ),
 ( 1, 3, 11, 1, '2018-10-21', '2018-10-21 14:15:00', '2018-10-21 14:45:00', 0, '', 0, 0 ),
 ( 1, 3, 11, 1, '2018-10-21', '2018-10-21 15:00:00', '2018-10-21 15:45:00', 0, '', 0, 0 ),
 ( 1, 3, 11, 1, '2018-10-21', '2018-10-21 16:00:00', '2018-10-21 16:30:00', 0, '', 0, 0 );

我当前的mysql查询:(我从另一个答案中提取了这个,并进行了修改以供我使用)

SELECT AvailStartTime, AvailEndTime 
FROM (SELECT @lastEndTime as AvailStartTime, StartTime as AvailEndTime, 
             @lastEndTime := EndTime 
      FROM (SELECT StartTime, EndTime 
            FROM app_bookings 
            WHERE doctor_id = 14 
            AND EndTime >= '2018-10-21 10:00' 
            AND StartTime < '2018-10-21 19:00' 
            ORDER BY StartTime
            ) e 
      JOIN (SELECT @lastEndTime := NULL) init) x WHERE 
            AvailEndTime > DATE_ADD(AvailStartTime, INTERVAL 15 MINUTE)

以上查询的输出如下:

我使用此查询获得正确的输出,但我需要跳过医生午餐时间,午餐开始时间为@startunch“13:00”到“14:00”,并获得从2018-10-21 15:30:00到2018-10-21 19:00的记录(如果预订了任何条目,请跳过)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题