MySQL 8 时间戳精度(以纳秒为单位)

MySQL 8 timestamp precision in nanoseconds

提问人:Jimmix 提问时间:3/30/2019 更新时间:3/30/2019 访问量:2699

问:

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

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

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

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

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

mysql datetime 时间戳 任意精度

评论

0赞 tadman 3/30/2019
我不知道有任何数据库的精度低于微秒级。你可能独自一人在这里。甚至 Postgres 也停在该分辨率上。值得注意的是,Postgres 允许轻松创建自定义列类型。
0赞 Jimmix 3/30/2019
@tadman广告自定义列类型,是否可以在类型下实现一些数学运算,例如 1usec = 1000nsec,但 1 分钟 = 60 秒,但 1 天 = 24h 等等。我不需要实现整个日历,而是实现不同的基础。我认为差异的最大值不应超过几天甚至几小时和最小纳秒。自定义类型可以由不同的碱基组成,因此在 999 之后的 nseconds 内,值滚动到 000,usecond 递增 1。分钟的情况类似,但在 59 分钟 + 1 分钟后,分钟滚动到 00,但小时是 +1?
2赞 tadman 3/30/2019
只需使用以纳秒为单位表示的 64 位值即可。从某个时代开始,这应该会让你度过 292 年。
0赞 Jimmix 3/30/2019
@tadman好点子!是否可以获得 64 位值,该值在存储在 HDD 时已根据其内容调整大小。或者 64 位 val 将始终占用 64 位 + 磁盘开销,即使其中仅存储 0 或 1?
0赞 tadman 3/31/2019
我不确定你在问什么。根据定义,64 位值的长度为 8 个字节。如果您真的担心额外的字节数,也许您需要评估您保留了多少数据以及您拥有哪些存储选项。

答: 暂无答案