处理和存储经过时间

时间:2020-03-05 18:59:24  来源:igfitidea点击:

我在决定最好的方法是处理和存储时间测量时遇到问题。

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

因此,我打算解析此字符串,在冒号上标记它,并创建TimeSpan(或者使用TimeSpan.Parse()并在mm:ss情况下仅添加" 00:")作为我的业务逻辑。好的?

我如何将其存储为数据库?字段类型是什么? DateTime似乎是错误的。我不想将00:54:12的时间存储为1901-01-01 00:54:12似乎有点可怜?

解决方案

回答

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

回答

对于不到一天的时间,只需使用其他人所说的几秒钟即可。

对于更长的时间,它取决于数据库引擎。如果是SQL Server(2008版之前的版本),则需要一个日期时间。没关系,我们可以忽略它们全部具有的默认1/1/1900日期。如果我们有幸拥有sql server 2008,那么可以使用单独的Date和Time数据类型。使用实际的日期时间/时间类型的优点是可以使用DateDiff函数比较持续时间。

回答

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

回答

以秒为单位的整数(或者毫秒)

回答

TimeSpan具有我们可以存储的Int64 Ticks属性,以及具有Ticks值的构造函数。

回答

我们是否同时收集开始时间和停止时间?如果是这样,如果DBMS支持,则可以使用"时间戳"数据类型。如果不是,则作为日期/时间类型。现在,我们已经说过不希望存储日期部分,但考虑到时间跨度午夜的情况,例如,我们从23:55:01开始并在00:05:14结束,那里的日期。有标准的内置函数可返回两个日期时间值之间的经过时间(以秒为单位)。

回答

使用整数秒或者分钟。秒可能更好。我们永远都不会为选择精度过高而自欺欺人。另外,对于UI,请考虑使用多个文本输入,而我们不必担心用户实际上是否正确键入了":"。添加其他约束(例如分钟和秒值,包含0-59)也容易得多。

回答

并且int类型应该做到这一点,将其存储为秒并来回解析

http://msdn.microsoft.com/en-us/library/ms187745.aspx