存储Lap Times SQL Server

时间:2018-04-28 02:10:46

标签: sql sql-server

什么是在SQL-Server数据库上存储单圈时间的最佳解决方案?建议的格式应为01:52.525。我使用时间(3),但它不允许我使用Avg()函数。

致以最诚挚的问候,

3 个答案:

答案 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