什么是在数据库中存储已用时间的最佳方法

时间:2011-06-04 00:49:32

标签: database ruby-on-rails-3 database-design activerecord time

我正在进行赛马应用,并且需要将比赛中经过的时间存储在桌子中。我将从逗号分隔文件导入数据,该文件以一种格式提供最终时间,在另一种格式中提供内部经过时间。以下是一个例子:

Final Time: 109.39  (1 minute, 9 seconds and 39/100th seconds)

Quarter Time: 2260  (21 seconds and 60/100th seconds)

Half Time: 4524     (45 seconds and 24/100th seconds)

Three Quarters: 5993   (59 seconds and 93/100th seconds) 

我希望能够灵活地轻松完成每秒脚数的计算以及将经过时间转换为分割。我还希望能够以五分之一秒或百分之一的速度轻松显示时间(经过或分裂)。

Times in fifths: :223  :451  :564      1:091 (note the last digits are superscripts)

Times in hundredths: 22.60  :45.24  :56.93   1:09.39

提前感谢您的意见。

4 个答案:

答案 0 :(得分:4)

通常,时间跨度存储为(1)秒或(2)开始/结束日期时间。如果需要,秒数可以是整数或浮点数/双精度数。你可能有创意/疯狂并且所有时间都存储为毫秒,在这种情况下你只需要一个整数。

答案 1 :(得分:2)

如果您使用的是PostgreSQL,则可以使用interval数据类型。否则,数据库支持的任何整数(int4,int8)或数字都可以。当然,将值存储在单个度量单位:秒,分钟,毫秒。

答案 2 :(得分:1)

这一切都取决于你打算如何使用它,但是经过的秒数(如果需要可能是浮动的)肯定是最受欢迎的。

答案 3 :(得分:1)

我认为代表109.39的{​​{1}}非常愚蠢。可能是明确的,肯定的历史传统,但用这种格式进行计算是很悲惨的。 (并非不可能,但在导入过程中修复它听起来很容易。)

我将时间存储在某种十进制格式中 - 或者是表示所有其他时间的百分之一秒的整数,或者是基于数据的十进制格式。

标准的浮点表示最终可能会让你想知道为什么一匹在20.1秒内跑了两圈的马每次需要40.200035秒才能跑完两圈。