用于在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?。
时间戳不会削减它。
TIMESTAMP列以与DATETIME 列相同的格式显示。换句话说,显示宽度固定为19个字符, ,格式为'YYYY-MM-DD HH:MM:SS'。
即使您做了几行来捕捉“时刻”来做两者的增量(差异),但最好的精度只有秒。
我会在整数。这样你可以在几秒内完成multipliers
。例如,0.1毫秒可以在整数列中存储为“1”。因为整数只能存储在一个整数列中,所以通过使用一个硬乘法器规则,可以向后工作以确定毫秒。
谢谢。我完全错过了它实际上不会存储毫秒。 –
由于这是分析,我建议一个bigint,万一请求挂起太多。 :-) –
谢谢。我完全错过了它实际上不会存储毫秒。 –
因为microtime(true)返回一个float/double,整数字段不会丢失一些精度吗? – relipse