这是我的示例数据:
ID StartTime IPStatus
A 2019-12-23 11:28:24.190 1
B 2019-12-23 11:28:24.190 1
B 2019-12-23 11:28:35.593 1
A 2019-12-23 11:28:35.593 1
A 2019-12-23 11:28:51.830 1
B 2019-12-23 11:28:51.830 1
B 2019-12-23 11:29:03.140 0
A 2019-12-23 11:29:03.140 0
A 2019-12-23 11:30:03.140 0
B 2019-12-23 11:30:03.140 0
B 2019-12-23 11:35:03.140 0
A 2019-12-23 11:35:03.140 0
A 2019-12-23 11:40:03.140 1
B 2019-12-23 11:40:03.140 1
B 2019-12-24 11:40:03.140 1
A 2019-12-24 11:40:03.140 1
A 2019-12-25 11:40:03.140 0
B 2019-12-25 11:40:03.140 0
B 2020-01-25 11:40:03.140 0
A 2020-01-25 11:40:03.140 0
A 2021-01-25 11:40:03.140 1
B 2021-01-25 11:40:03.140 1
我需要以Days:Hours:Min:Seconds格式计算ID A和B输入和输出多少时间。Ipstatus 1表示IN,0表示out。
我有这段代码可以计算出Days:Hours:Min:Seconds中的时差
Declare @start datetime = '2019-06-26 12:14:13',@End datetime = '2019-08-27 12:14:36'
select convert(varchar(550),DateDiff(day, @start, @End)%3600)+'D : '+convert(varchar(5),DateDiff(s, @start, @End)/3600/60)+'H : '+convert(varchar(5),DateDiff(s, @start, @End)%3600/60)+'M : '+convert(varchar(5),(DateDiff(s, @start, @End)%60)) +'S' as Duration 但是当我们有2个单独的列时,它可以工作。在上述情况下如何计算时差?请建议
预期产量:
ID Status TotalTime
A 1 10D : 10Hr : 15 min : 15 sec
A 0 10D : 10Hr : 15 min : 15 sec
B 1 10D : 10Hr : 15 min : 15 sec
B 0 10D : 10Hr : 15 min : 15 sec
注意:我刚刚输入了随机总数。
第一个启动时间2019-12-23 11:28:24.190第 一个启动时间2019-12-23 11:28:35.593 第三个启动时间2019-12-23 11:28:51.830
Ipstatus = 1时为11 + 16 = 16秒,依此类推
SELECT ID,IPStatus,
CONVERT(VARCHAR(100),SUM(DATEDIFF(DAY, [StartTime], EndTime)%3600))+ ' D :'
+CONVERT(VARCHAR(100),SUM(DATEDIFF(s, [StartTime], EndTime)/3600/60))+ 'H: '
+CONVERT(VARCHAR(100),SUM(DATEDIFF(s, [StartTime], EndTime)%3600/60))+ 'M: '
+CONVERT(VARCHAR(100),SUM(DATEDIFF(s, [StartTime], EndTime)%60))+ 'S'
FROM
(
SELECT ID,[IPStatus],[StartTime],LEAD([StartTime]) over (PARTITION BY ID,[IPStatus] ORDER BY [StartTime]) AS EndTime
FROM Table1
)T
WHERE StartTime<>EndTime
AND EndTime IS NOT NULL
GROUP BY ID,IPStatus
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。