PostgreSQL 中以毫秒为单位的 Unix 时间戳

Unix timestamp in milliseconds in PostgreSQL

我正在以 Avro 格式将数据从 Kafka 主题流式传输到 PostgreSQL。 列 time 包含以下格式的 Unix 时间:

"time": "1645196215"
"time": "1645196215.3"
"time": "1645196215.34"
"time": "1645196215.36"
"time": "1645196215.3799999"
"time": "1645196215.3999999"
"time": "1645196215.4199998"

如果我以这个 1645196215.36 值为例,我可以删除“.”并添加 0 这将使我得到 1645196215360 可以在 PostgreSQL 中转换 select extract(epoch FROM 1645196215360) * 1000

考虑到我必须以毫秒精度在 PostgreSQL 日期时间中以 Avro 格式传递它,如何舍入其他类型的数字?

我的想法是.后面没有的时候加000.后面有一个数字的时候加00等等。。。有更好的处理方法吗?

我不知道你为什么要用这么复杂的方式来做这件事。您可以简单地调用 to_timestamp 值:

SELECT to_timestamp(1645196215.36);

       to_timestamp        
═══════════════════════════
 2022-02-18 15:56:55.36+01
(1 row)