我有一个包含 startdatetime 和 enddatetime 的表。如何找到与其他日期重叠的特定日期时间:参见下面的示例
create table #period (
id int,
starttime datetime,
endtime datetime
);
insert into #period values
(1,'2013-10-10 08:00:00' , '2013-10-10 10:00:00'),
(2,'2013-10-10 08:10:00' , '2013-10-10 08:20:00'),
(3,'2013-10-10 08:10:00' , '2013-10-10 08:30:00')
(4,'2013-10-10 08:15:00' , '2013-10-10 08:25:00')
select * from #period
required output is '2013-10-10 08:15:00' , '2013-10-10 08:20:00' is getting overlapped in all the dates.
expected output: '2013-10-10 08:15:00' '2013-10-10 08:20:00' 5 Min
编辑:
我为前面的问题道歉这是正确的细节和例子
create table #period
(
Sitecode varchar(20),
svrname varchar(10),
StartTime datetime,
downtimeEnd datetime
)
go
insert into #period values
('A','S1','2013-10-10 10:00:00' , '2013-10-10 11:00:00'),
('A','S2','2013-10-10 10:00:00' , '2013-10-10 11:00:00'),
('A','S3','2013-10-10 10:00:00' , '2013-10-10 11:00:00'),
('A','S1','2013-10-10 03:00:00' , '2013-10-10 03:30:00'),
('A','S2','2013-10-10 06:30:00' , '2013-10-10 07:30:00')
select * from #period
预期输出为:
Sitecode 'A' Total 2.5 hours (below is the details) '2013-10-10 10:00:00' , '2013-10-10 11:00:00' getting overlapp - 1 hour '2013-10-10 03:00:00' , '2013-10-10 03:30:00' - .5 hour '2013-10-10 06:30:00' , '2013-10-10 07:30:00'- 1 hour
输出是 group by sitecode
。并且重叠日期只考虑一次。最终输出是必需的:
站点代码“A”= 2.5 小时