什么是在SQL-Server数据库上存储单圈时间的最佳解决方案?建议的格式应为01:52.525
。我使用时间(3),但它不允许我使用Avg()
函数。
致以最诚挚的问候,
答案 0 :(得分:0)
尝试以纪元毫秒存储开始时间和持续时间(单圈时间),然后使用SQL查询(允许Avg()
):
SELECT (duration - start) FROM lap_times (WHERE ...)
有关将毫秒转换为人类可读的时间戳的信息,请参阅this answer。
答案 1 :(得分:0)
将时间存储为alter table t add laptime_ms as (datediff(ms, 0, laptime));
。添加计算列,其值为毫秒。使用计算列进行计算。
例如:
select convert(time, dateadd(ms, 0, avg(laptime_ms)))
from t
您现在可以将其用于平均值,并将其转换回时间:
time
答案 2 :(得分:0)
由于您已将圈持续时间存储为DATEDIFF
,因此您可以使用DATEADD
计算平均计算的持续时间(以毫秒为单位),并使用SELECT
AVG(DATEDIFF(millisecond, '', LapTime)) AS AvgLapTimeMilliseconds
, CAST(DATEADD(millisecond, AVG(DATEDIFF(millisecond, '', LapTime)), '') AS time(3)) AS AvgLapTime
FROM dbo.Lap;
将毫秒转换为时间。
click