什么是有意义的数据类型来节省时间

时间:2010-11-01 10:51:32

标签: c# .net sql-server database-design

什么是在.net中节省时间的好数据类型?

使用decimal类型或double数据类型更合适是否更好?小时数我的意思是:

  • 2两小时
  • 1.5分90分钟
  • 8.25 8小时15分钟。

4 个答案:

答案 0 :(得分:12)

表示数小时的好方法是使用TimeSpan:

TimeSpan hours = TimeSpan.FromHours(2);

鉴于decimaldouble之间的选择,我可能选择double,因为通常不会期望精确表示时间量。如果您需要小数小时的精确十进制表示(似乎不太可能),请使用decimal

您还可以考虑将其存储为整数,例如秒,毫秒或刻度。

答案 1 :(得分:6)

存储小时数的最佳数据类型是为其设计的数据类型 - TimeSpan

它有一些方法可以让你添加/减去/转换它。

至于数据库中的存储,它实际上取决于你使用它的原因以及需要什么样的分辨率。

我会使用time数据类型 - 因为它将保存范围:

  

00:00:00.0000000至23:59:59.9999999

但是,如果您需要在此字段中保留超过24小时,则可能需要考虑保留分钟数的tinyintint(假设这是您需要的最长时间分辨率) )。

答案 2 :(得分:4)

在SQL Server中使用INT或DECIMAL。 TIME不是存储持续时间的理想选择,因为TIME定义了24小时内的时间点,而持续时间只是一个整数或十进制值。您不能使用TIME值进行加法或减法,并且没有明显的方法可以使用TIME来存储大于24小时的持续时间。

答案 3 :(得分:1)

为什么不使用TIME

您可以使用DATEADD和TIME来更轻松地操作它:

SELECT DATEADD(minute, 30, CAST('2:00:00' AS TIME))

变为02:30:00.0000000。等等..