2016-08-09 45 views
3

我正在使用SQL Server 2008.我有几行start_time和end_time。我想用MM:SS格式计算这两次之间的平均差值。显示两个时间字段之间的平均差异为MM中的SQL:SQL

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

在此先感谢您的帮助。

回答

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 
+0

这工作,谢谢! –

0

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

0

或者

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

完美,谢谢! –

相关问题