用于在MySQL中存储microtime差异的最佳数据类型

时间:2011-06-24 15:35:31

标签: php mysql timestamp datediff

我将记录处理REST请求所花费的时间,而我还没有确定哪种数据类型最适合该列。时间差是毫秒级,我不希望它小于1毫秒,但可能是几秒钟(通常希望它不会更高!)。

Best way to store span on time in a MySQL database?非常相似,但具有更高的精确度。

我相信我有两个选择:时间戳或整数。时间戳具有微秒精度,整数可以具有我需要的任何实际精度(只需将时间差乘以Y * 1000)。

时差将以PHP计算

$start = microtime(true);
// do something
$runtime = microtime(true) - $start;

哪种数据类型最适合在MySQL中以毫秒级存储时差?

这种情况的时间戳和整数的优缺点是什么?

2 个答案:

答案 0 :(得分:4)

时间戳用于存储时刻,而不是持续时间。 TIMESTAMP不存储毫秒,TIME也不存储。使用整数字段。

我也发现了一个类似的问题:Storing microseconds in MySQL: which workaround?

答案 1 :(得分:3)

时间戳不会削减它。

  

TIMESTAMP列以与DATETIME相同的格式显示   列。换句话说,显示宽度固定为19个字符,   格式为'YYYY-MM-DD HH:MM:SS'。

即使你做了几行来捕捉“时刻”来做两者的增量(差异),最好的精度只能是几秒钟。

我会用整数来做。这样您可以在几毫秒内执行multipliers。例如,.1毫秒可以在整数列中存储为“1”。因为整数只能存储在整数列中,所以通过使用硬乘数规则,可以向后工作以确定毫秒数。