根据MySQL中的现有记录查找一天中可用的时隙

时间:2014-04-10 22:33:27

标签: mysql

我有一个包含这些字段的表:

enter image description here

我如何找到当天在此表中的当天所有可用时段(基于从早上7点开始到晚上10点结束的那一天)?例如,在某一天,如果从早上7点到晚上10点的所有时段都在下午6点到晚上7点进行,那将是一个结果。

每个时段的持续时间不会改变 - 它们都持续一个小时。

我尝试了很多不同的东西,但我觉得我离这么远,我很难发布我尝试过的东西。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我想到的一件事就是拥有一个“小时表”,其中包含您想要检查的所有值。然后,使用左连接并仅选择空值,您将只获得未分配的值。我构建了一个SQLfiddle http://sqlfiddle.com/#!2/66b441/6,用一些虚拟值来检查它,以显示它是如何工作的:

SELECT h.slot
FROM hours h
LEFT JOIN deliveries d
ON ( h.slot = d.start_time AND date_stamp = '2014-04-04' )
WHERE start_time IS NULL

检查SQLfiddle中的数据,如果您知道插槽并且它们没有重叠,那么您将获得值的日期

SLOT
January, 01 1970 07:00:00+0000
January, 01 1970 10:00:00+0000