【问题标题】:PostgreSQL support for timestamps to nanosecond resolutionPostgreSQL 对时间戳到纳秒分辨率的支持
【发布时间】:2017-01-06 20:57:38
【问题描述】:

我收到的数据的时间戳低至纳秒(我们真正关心的)。有没有办法让 Postgres 时间戳达到纳秒?

【问题讨论】:

标签: postgresql


【解决方案1】:

正如其他人所指出的,Postgres 并没有提供开箱即用的这种类型。但是,由于 Postgres 的开源特性,创建支持纳秒分辨率的扩展相对简单。不久前我遇到了类似的问题,并为 Postgres 创建了this timestamp9 extension

它在内部将时间戳存储为 bigint,并将其定义为自 UNIX 纪元以来的纳秒数。它围绕它提供了一些方便的功能,使查看和操作时间戳变得容易。如果您可以忍受这些时间戳可能具有的有限时间范围,即 1970 年到 2262 年之间,那么这是一个很好的解决方案。

免责声明:我是扩展的作者

【讨论】:

    【解决方案2】:

    不,但您可以将时间戳修剪到毫秒,并将纳秒部分存储到单独的列中。 您可以在两者上创建索引,并在视图或函数上返回您想要的纳秒时间戳,您甚至可以在您的函数上创建索引。

    【讨论】:

    • 如果你走这条路,你应该存储秒和纳秒,而不是毫秒和纳秒。 nanos 仍然适合 int32,并且您将超过 int64 毫秒溢出。
    【解决方案3】:

    一方面,documented resolution 是 1 微秒。

    另一方面,PostgreSQL 是开源的。也许你可以拼凑一些东西来支持纳秒。

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 2019-06-21
      • 2015-01-17
      • 2021-11-16
      • 2013-11-27
      相关资源
      最近更新 更多