【问题标题】:Best data type for storing microtime difference in MySQLMySQL中存储微时差的最佳数据类型
【发布时间】:2011-06-24 15:35:31
【问题描述】:

我将记录处理 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 中存储毫秒级的时间差?

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

【问题讨论】:

    标签: php mysql timestamp datediff


    【解决方案1】:

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

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

    【讨论】:

    • 由于这是用于分析,我建议使用 bigint,以防请求挂起太多。 :-)
    • 谢谢。我完全错过了它实际上不会存储毫秒。
    • 由于 microtime(true) 返回浮点数/双精度值,整数字段不会丢失一些精度吗?
    【解决方案2】:

    时间戳不会削减它。

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

    即使你做几行来捕捉“时间瞬间”来做两者的增量(差异),最好的精度也只有几秒钟。

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

    【讨论】:

    • 谢谢。我完全错过了它实际上不会存储毫秒。
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 2013-10-04
    • 2011-10-24
    • 1970-01-01
    • 2017-10-28
    • 2010-12-22
    • 2013-08-12
    相关资源
    最近更新 更多