2011-06-04 92 views
2

我正在参加一个赛马应用程序,并且需要存储从表中比赛中消耗的时间。我会从一个逗号分隔的文件,提供最后一次在一个格式导入数据和内部的另一个经过时间。下面是一个例子:在数据库中存储已用时间的最佳方式是什么

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

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

+0

我正在使用rails。所以也许我可以毫秒储存,然后创建一个辅助方法。 – Mutuelinvestor 2011-06-04 01:03:51

2

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

+0

我使用的是与Postgres数据库轨红宝石。我不确定区间数据类型是否可用。 – Mutuelinvestor 2011-06-04 00:59:30

+0

我只是尝试在rails中使用interval,并得到一条错误消息。感谢这个想法,它会很好地工作。 – Mutuelinvestor 2011-06-04 01:16:47

1

这一切都取决于你打算如何使用它,但经过的秒数(或许为float如果需要的话)肯定是最喜欢的。

1

我觉得109.39代表1 min 9.39 sec是非常愚蠢的。毫无疑问,当然可能是历史传统,但用这种格式进行计算是很悲惨的。 (不是不​​可能的,但在导入过程中修复它听起来很简单。)

我会以某种形式的十进制格式存储时间 - 或者是一个表示百分之一秒的整数,因为所有其他时间都显示,或数据库特定的十进制感知格式。

标准浮点表示法可能最终导致您想知道为什么在20.1秒内跑了两圈的马每次花费40.200035秒来运行两圈。

相关问题