我正在使用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
第一行的差值为00:15,第二行的差值为02:30。整个数据集的平均值为01:23(1分23秒)。
我使用的代码如下所示,但只返回一个整数。
AVG(DATEDIFF(MI,start_time,end_time))
提前感谢你的帮助。
您已经接近了,但是您应该使用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
您可以将日期转换为unix时间戳,然后将秒转换为字符串
或者
right(convert(varchar(20), Dateadd(second, Avg(Datediff(second, Start_Time, End_Time)), 0), 120), 5)