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

问题描述:

我将记录处理REST请求所需的时间,并且我不确定哪种数据类型对于列最适合。时间差将以毫秒为单位,我不会期望它小于1ms,但可能是几秒钟(希望它不会更高!)。用于在MySQL中存储microtime差异的最佳数据类型

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

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

的时间差将PHP通过

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

的数据类型将是最好的保存在MySQL在毫秒级的时间差来计算?

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

时间戳用来存储一个时间点,而不是一段时间。 TIMESTAMP不存储毫秒,也不会存储TIME。带一个整数字段。

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

+0

由于这是分析,我建议一个bigint,万一请求挂起太多。 :-) –

+0

谢谢。我完全错过了它实际上不会存储毫秒。 –

+0

因为microtime(true)返回一个float/double,整数字段不会丢失一些精度吗? – relipse

时间戳不会削减它。

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

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

我会在整数。这样你可以在几秒内完成multipliers。例如,0.1毫秒可以在整数列中存储为“1”。因为整数只能存储在一个整数列中,所以通过使用一个硬乘法器规则,可以向后工作以确定毫秒。

+0

谢谢。我完全错过了它实际上不会存储毫秒。 –