35

我需要计算用户在网站上花费的时间。注销时间和登录时间之间的差异给了我类似“X先生在网上花了4小时43分钟”这样的信息。所以为了存储 4 小时 43 分钟,我这样声明: durationtime NOT NULL

这是有效的还是更好的存储方式?我需要存储在数据库中,因为我需要将其用于 + 其他用例的其他计算。

4

3 回答 3

50

将其存储为整数秒将是最好的方法。

  • UPDATE将是干净和简单的 - 即duration = duration + $increment
  • 正如 Tristram 所指出的,使用该字段存在限制- 例如“值的范围可能从到”TIMETIME'-838:59:59''838:59:59'
  • 天/小时/分钟/秒显示格式不会被硬编码。
  • 使用整数“秒数”字段时,您的其他计算的执行几乎肯定会更清晰。
于 2010-12-21T20:21:15.853 回答
0

我不会使用时间,因为您将被限制为 24 小时。最简单的方法是以分钟为单位存储一个整数(或秒,具体取决于您需要的分辨率)。

于 2010-12-21T10:57:29.250 回答
-1

考虑将这两个值存储为 UNIX-epoch-delta。

我通常更喜欢使用有符号(64b)bigint(用于第二分辨率),或(有符号)(64b)双精度(如果需要小数秒),或有符号(32b)整数(如果缩小到分钟或小时) .

在列的名称中明确表示单位,例如使用“_epoch_minutely”之类的后缀,例如:“started_epoch_minutely”、“finished_epoch_minutely”。

于 2019-06-21T11:52:45.490 回答