如果我想节省一段时间到数据库,我会使用什么数据类型?

时间:2011-08-08 15:20:41

标签: sql sql-server time timespan

我想保存游戏的持续时间。类似于1:43:000:32:12的内容。

如果我使用的是Microsoft SQL Server 2008 R2,我应该选择哪种数据类型?

4 个答案:

答案 0 :(得分:3)

使用整数类型,只存储您所关心的最小精度单位的数量(在本例中为秒)。您的客户端程序代码应该担心格式化它。因此,对于您的两个样本值,存储的数据将为61801932

要显示值,C#(例如)将使用类似TimeSpan.FromSeconds().ToString()

的内容

答案 1 :(得分:2)

或者:

TIME datatype...

或将开始和结束时间存储为smalldatetime

我会说商店2记录为smalldatetime,因此您可以选择超过24小时而无需更改数据结构。

答案 2 :(得分:2)

我只会存储秒数。通常存储两个日期就足够了,但我认为这将是您在游戏本身或每个会话中跟踪的内容。

答案 3 :(得分:1)

最好存储游戏的开始和结束时间,并根据需要动态计算持续时间。这样,您可以更改开始和/或结束时间,而无需显式更新持续时间。

至于你的问题,我会使用int数据类型并以分钟为单位存储持续时间。通过在几分钟内存储它,您可以轻松地将其转换为几小时。 DATEDIFF函数已经返回INT,因此您不需要进行任何其他操作。

DECLARE @TotalMinutes INT
SELECT @TotalMinutes = DATEDIFF(MINUTE, StartTime, EndTime)