我有一张这样的表:
day start end
2013-01-02 08:00:00 12:00:00
2013-01-02 16:00:00 18:00:00
2013-01-02 23:00:00 03:00:00
2013-01-03 08:00:00 12:00:00
2013-01-03 16:00:00 18:00:00
2013-01-03 23:00:00 03:00:00
我想要做的是选择表格,结果如下:
day start end
2013-01-02 12:00:00 16:00:00
2013-01-02 18:00:00 23:00:00
显示我在该时间表上的空闲时间,我已经尝试了几个小时不能重新分析如何做,请帮助
答案 0 :(得分:0)
你似乎只想要中间时间。所以你可以使用lead()
:
select day, end, nextstart
from (select t.*, lead(start) over (partition by day order by start) as nextstart
from table t
) t
where end <> nextstart;
(注意:为了清楚起见,我没有逃过保留字。你不应该将end
和day
之类的列命名为保留字。)
如果您想要0:00-8:00,这会更具挑战性。