我一直在尝试从一个有三列(user_id,start_time,end_time)的表中找到持续时间为60分钟的免费时间段,但是不知何故无法让它工作。
我只有一张桌子'计时',我正在存储所有已预订的广告位。假设所有条目仅为一天。
Select
a.id,
a.end_hour AS `Free time Start`,
IFNULL(la.start_hour,a.end_hour) AS `Free Time End`,
IFNULL(TIMEDIFF(la.start_hour, a.end_hour),'00:00:00') AS `Total Free Time`
FROM timing AS a
LEFT JOIN (SELECT * FROM timing LIMIT 1,18446744073709551615) AS la
ON la.id = (SELECT MIN(id) FROM timing where (id > a.id AND user_id = a.user_id) LIMIT 1)
WHERE a.user_id = 2;
有了这个,我就能找到实际使用的插槽之间的所有空闲插槽。我需要两点帮助
1。如何包括一天的开始和结束时间(分别为9:00和17:00)。因此,如果第一个占用的插槽在10:00开始,则9:00-10:00也是一个空闲插槽
2。如何在固定时间段(例如1小时)中拆分空闲时间
谢谢!