我有一个日期范围的表,我需要它的行之间的重叠时间段(以小时为单位)的总和。
这是一个模式示例:
create table period (
id int,
starttime datetime,
endtime datetime,
type varchar(64)
);
insert into period values (1,'2013-04-07 8:00','2013-04-07 13:00','Work');
insert into period values (2,'2013-04-07 14:00','2013-04-07 17:00','Work');
insert into period values (3,'2013-04-08 8:00','2013-04-08 13:00','Work');
insert into period values (4,'2013-04-08 14:00','2013-04-08 17:00','Work');
insert into period values (5,'2013-04-07 10:00','2013-04-07 11:00','Holyday'); /* 1h overlapping with 1*/
insert into period values (6,'2013-04-08 10:00','2013-04-08 20:00','Transfer'); /* 6h overlapping with 3 and 4*/
insert into period values (7,'2013-04-08 11:00','2013-04-08 12:00','Test'); /* 1h overlapping with 3 and 6*/
它的小提琴:http ://sqlfiddle.com/#!6/9ca31/10
我预计 8h 重叠小时的总和:1h(id 5 over id 1)6h(id 6 over id 3 和 4)1h(id 7 over id 3 和 6)
我检查了这一点:使用 SQL 选择重叠的日期时间事件,但似乎没有做我需要的事情。
谢谢你。