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

Show average difference between two time fields as MM:SS in SQL

我正在使用 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 秒)。

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

AVG(DATEDIFF(MI,start_time,end_time))

在此先感谢您的帮助。

您可以将日期转换为 unixtimestamp,然后将秒转换为字符串。

你很接近,但你应该使用 DateDiff() 来获得两个字段之间 的平均数,而不是 [=20] 的平均数=]分钟.

使用 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

或者

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