2008-09-17 54 views
6

我在处理和存储时间测量时决定最佳方式的问题。处理和存储已用时间

我有一个应用程序有一个文本框,允许用户以hh:mm:ss或mm:ss格式输入时间。

所以我打算解析这个字符串,在冒号上标记它,并创建TimeSpan(或使用TimeSpan.Parse(),并在我的业务逻辑中添加一个“00:”到mm:ss的情况)。好?

但是,如何将它作为数据库存储?字段类型是什么? DateTime似乎不对。我不想将00:54:12的时间存储为1901-01-01 00:54:12,这似乎有点差劲?

回答

8

时间跨度有可以存储代替一个Int64 Ticks属性,和一个constructor采用一个蜱值。

3

我认为最简单的就是将用户输入转换为整数秒。因此54:12 == 3252秒,所以将3252存储在数据库或任何地方。然后,当您需要将其显示给用户时,可以再次将其转换回来。

3

对于不到一天的时间段,只需使用其他人说的秒。

对于更长的时间,它取决于您的数据库引擎。如果SQL Server在版本2008之前需要日期时间。没关系,你可以忽略默认的1/1/1900日期。如果你有幸拥有sql server 2008,那么你可以使用单独的Date和Time数据类型。使用真正的日期/时间类型的优点是使用DateDiff函数来比较持续时间。

+0

大拇指; ) – morde 2011-02-16 09:03:01

0

大多数数据库都有某种时间间隔类型。答案取决于你在谈论哪个数据库。对于Oracle来说,它只是一个浮点数NUMBER,表示天数(包括小数部分)。您可以将其添加到/从任何DATE类型中减去,并获得正确的答案。

0

作为秒的整数计数(或毫秒为适当)

0

你是否在收集开始时间和停止时间?如果是这样,你可以使用“timestamp”数据类型,如果你的DBMS支持。如果不是,就像日期/时间类型一样。现在,你已经说过你不希望存储日期部分 - 但是考虑一下时间跨越午夜的情况 - 例如,你从23:55:01开始,然后在00:05:14结束 - 除非你也有在那里的日期。在函数中有标准构建来返回两个日期时间值之间的经过时间(以秒为单位)。

0

使用整数运行几秒或几分钟。秒可能会更好。你永远不会因为选择太精确的东西而自责。另外,对于您的用户界面,请考虑使用多个文本输入,您不必担心用户实际正确键入“:”。添加其他约束条件(例如包含0-59的分数和秒数值conting)也更容易。