我有以下表格:
Event Startdatetime Enddatetime Value
1 '23/09/2016 12:15:20' '23/09/2016 12:34:30' 50
1 '23/09/2016 14:10:40' '23/09/2016 14:30:25' 40
2 '25/10/2016 10:20:45' '25/10/2016 10:45:55' 80
2 '25/10/2016 11:27:35' '25/10/2016 11:48:55' 30
每条记录都有startdatetime和enddatetime,我想计算每组记录之间的时差(按事件)。
答案 0 :(得分:1)
由于这不是SQL Server识别的日期格式,因此您需要先将其转换然后再进行数学运算。您可以使用LAG
从SQL 2012开始获取上一条记录。
select datediff(mi,convert(datetime,Startdatetime,103),convert(datetime,lag(Enddatetime) over (order by Startdatetime),103))
或者如果它不需要转换......
select datediff(mi,Startdatetime,lag(Enddatetime) over (order by Startdatetime))
如果您只想对事件进行时间计算,那么您也可以对其进行分区......
select datediff(mi,Startdatetime,lag(Enddatetime) over (partition by Event order by Startdatetime))