MySQL 8 时间戳精度(纳秒)

问题描述 投票:0回答:1

是否可以以纳秒精度存储在 MySQL DATETIME 或其他等效数据类型中?

根据分数秒文档在我看来不可能(最大6位亚秒精度= 1 usec),但也许有另一种数据类型或函数可以解决这个问题?

我希望能够以纳秒精度计算时间范围之间的差异,并希望避免将它们存储在 INT 中并进行自己的数学计算。

如果 MySQL 根本不支持这种精度,我可以安装一个插件/扩展来获得自定义的 DATETIME 精度,我可以将其设置为纳秒(第二个逗号后的 9 位数字)?

如果这是不可能的,是否有支持纳秒精度的 RDBMS?或者至少是 NoSQL(具有以纳秒精度计算时间差异的函数)?

mysql datetime timestamp precision arbitrary-precision
1个回答
0
投票

我建议使用时间戳,但将它们存储为小数。

我从我对 Y2038 bug 的回答中复制了这个。

十进制

这是我找到的解决方案,因为你获得了很多控制权。

就我而言,我想要:

  • BIGINT 的所有优点(在其他答案中提到)。
  • 精度低至百分之一秒(或更好)。
  • 为了清晰起见,有小数点
  • 和自动生成的时间戳插入

这是我创建表架构中的列定义:

`created` decimal(18,2) NOT NULL DEFAULT (unix_timestamp(now(2))) COMMENT 'unix timestamp'

使用decimal(18,2)提供了一个过度的时间范围,其存储与BIGINT或DATETIME相同,同时显示我的厘秒的2位数字。

存储是基于位数的,9位数字= 4字节,有符号或无符号都没关系。

很灵活。

您可以将范围限制为更实际的值,并使用比 DATETIME 少得多的存储空间,或者将精度提高到纳秒。 您决定什么是重要的,并且以后随时可以更改。

© www.soinside.com 2019 - 2024. All rights reserved.