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



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

相关内容

  • 没有找到相关文章

最新更新