MySQL存储持续时间 - 数据类型?

时间:2010-12-21 10:55:44

标签: mysql time types duration

我需要计算用户在网站上花费的时间。注销时间和登录时间之间的区别给我一些类似“X先生花了4小时43分钟在线”的内容。所以为了存储4小时43分钟我宣布它是这样的: duration时间非空

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

3 个答案:

答案 0 :(得分:39)

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

  • UPDATE将简洁明了 - 即duration = duration + $increment
  • 正如Tristram所说,使用TIME字段有limitations - 例如“TIME值的范围可以从'-838:59:59''838:59:59'
  • 日期/小时/分钟/秒显示格式不会被硬编码。
  • 使用整数“秒数”字段时,执行其他计算几乎肯定会更清晰。

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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

我通常更喜欢使用带符号的(64b)bigint(用于第二解析度)或(带符号的)(64b)双精度(如果需要小数秒),或带符号的(32b)int(如果缩小至分钟)或每小时)。

使该单位在列名中明确显示,例如后缀为“ _epoch_minutely”,例如:“ started_epoch_minutely”,“ finished_epoch_minutely”。