【发布时间】:2013-08-21 09:03:54
【问题描述】:
我有一个包含 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
输出按sitecode 分组。并且重叠日期只考虑一次。
最终输出是必需的:
站点代码“A”= 2.5 小时
【问题讨论】:
-
您实际上只是在询问
The total number of hours that ANY server was down?那么,如果十台服务器停机一个小时,那仍然只是一个小时的停机时间?如果只有一台服务器停机了一个小时,那仍然是一个小时的停机时间?
标签: sql-server tsql date-range