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)
我正在以 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)