我正在使用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))
提前感谢您的帮助。
答案 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)