代码之家  ›  专栏  ›  技术社区  ›  HCL

什么是有意义的完整数据类型以节省时间

  •  5
  • HCL  · 技术社区  · 14 年前

    在.NET中保存小时数的好数据类型是什么?

    最好使用 decimal 类型或是 double 数据类型更合适。我指的是小时值,例如:

    • 2个小时
    • 1.5持续90分钟
    • 8.25持续8小时15分钟。
    4 回复  |  直到 14 年前
        1
  •  12
  •   Mark Byers    14 年前

    表示小时数的一个好方法是使用时间跨度:

    TimeSpan hours = TimeSpan.FromHours(2);
    

    考虑到两者之间的选择 decimal double 我可能会去的 双重的 因为通常不期望准确地表示时间量。如果您需要精确的十进制小时数表示(似乎不太可能),请使用 十进制的

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

        2
  •  6
  •   Oded    14 年前

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

    它的方法允许您对其进行加/减/转换。

    至于数据库中的存储,它实际上取决于您使用它的目的和所需的解决方案。

    我会用 time 数据类型-因为它将包含范围:

    00:00:00.0000000至23:59:59.9999999

    但是,如果您需要在该字段中保持24小时以上,您可能需要考虑 tinyint int 保持分钟数(假设这是您需要的最大时间分辨率)。

        3
  •  4
  •   nvogel    14 年前

    在SQL Server中,使用int或decimal。时间对于存储持续时间并不理想,因为时间定义了24小时内的时间点,而持续时间只是一个整数或十进制值。不能使用时间值进行加减运算,也没有明显的方法可以使用时间来存储超过24小时的持续时间。

        4
  •  1
  •   abatishchev Karl Johan    14 年前

    为什么不使用 TIME ?

    你可以用 DATEADD 随着时间的推移,操作起来更容易:

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

    变成 02:30:00.0000000 . 等等……