在SQL中将两个时间字段之间的平均差异显示为MM:SS

时间:2016-08-09 14:29:53

标签: sql datetime sql-server-2008-r2 datediff

我正在使用SQL Server 2008.我有几行start_time和end_time。我想以MM:SS格式计算这两次之间的平均差异。

start_time | end_time     
10:15:30   | 10:15:45     
10:45:00   | 10:47:30

第1行将是00:15的差异,第2行将是02:30的差异。整个数据集的平均值为01:23(1分23秒)。

我使用的代码如下所示,但只返回一个整数。

AVG(DATEDIFF(MI,start_time,end_time))

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您已关闭,但您应该使用DateDiff()来获取两个字段之间的平均数,而不是分钟的平均数

使用SQL Server 2008 R2,您无权访问TIMEFROMPARTS(),这会极大地简化展示,因此您必须将其转换为VARCHAR才能获得你想要的格式。

;With AverageSeconds As
(
    Select  Avg(DateDiff(Second, Start_Time, End_Time))) AvgSec
    From    YourTable
)
Select  Right('00' + Convert(Varchar, (AvgSec / 60)), 2) 
             + ':' 
      + Right('00' + Convert(Varchar, (AvgSec % 60)), 2)
From    AverageSeconds

答案 1 :(得分:0)

您可以在unixtimestamp中转换日期,然后在字符串中转换秒数。

答案 2 :(得分:0)

或者

right(convert(varchar(20), Dateadd(second, Avg(Datediff(second, Start_Time, End_Time)), 0), 120), 5)