计算组中每条记录之间的分钟时差

时间:2016-09-29 19:36:12

标签: sql sql-server

我有以下表格:

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,我想计算每组记录之间的时差(按事件)。

1 个答案:

答案 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))