我使用以下SQL查询来获取AvgTime,当传递两个日期以秒为单位fnDatetoSeconds
其返回时差。 在上面的查询中,以分钟为单位返回输出。
我需要把它当作HH.MM.SS
. 我该怎么做
SELECT
ISNULL(CAST(AVG(CASE WHEN (l.Status = 5 OR l.Status = 6) THEN dbo.fnDatetoSeconds(l.AssistedTime, l.AddedTime, NULL)*1.0 ELSE NULL END)/60.00 AS DECIMAL(18,6)), 0) AS AvgTime
ISNULL(CAST(AVG(CASE WHEN (l.Status = 2) THEN dbo.fnDatetoSeconds(l.CompletedTime, l.AddedTime, NULL)*1.0 ELSE NULL END)/60.00 AS DECIMAL(18,6)), 0) AS AvgTimeNew
FROM @LobbyRecords l;
这解决了最初的问题。
如果你有两个时间,你想要平均时间,我建议:
select convert(time,
dateadd(second,
avg( datediff(second, l.AddedTime, l.AssistedTime)),
0
)
)
from @LobbyRecords l
where l.status in (5, 6);
我将case
条件移至where
子句,只是为了简化逻辑以专注于关键思想 - 将平均秒数添加到0
。