将两个时间字段之间的平均差异显示为 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)
我正在使用 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)