求一段时间内不连续的时间间隔之和
问题描述:
有一个需求,是这样,一个机器在早上8点到晚上8点,我需要统计这段时间内机器的停机时间,其中,机器的运行时间是现有的,附带一张我画的示意图
有没有知道改怎么写呢,我目前只能写出第一种情况
select MachineName ,12-sum(runtime) as 停机时间
where StartTime >= CONVERT(varchar(10), GETDATE()-1, 23)+' 08:00:00'
and EndTime<=CONVERT(varchar(10), GETDATE()-1, 23)+' 20:00:00'
group by MachineName
答
开始时间要case when 一下,如果小于8点就当8点算,否则就保留原值;
结束时间也是一样,如果大于20点就当20点算,否则就保留原值,
最后用转换后的结束时间减去开始时间得运行时长
答
停机时间你不是计算出来了,还有什么情况呢?
答
具体是什么数据库,放一些测试数据出来看看,然后,你想得到最终每个设备的停机时间和是什么单位(分钟/小时),如果是小时,不足1小时的停机时段怎么算之类的