Postgresql 将ISO8601日期文本转换为时间戳

Postgresql 将ISO8601日期文本转换为时间戳,postgresql,dbeaver,postgresql-11,Postgresql,Dbeaver,Postgresql 11,我正在处理ISO 8601中的一些日期,当转换为时间戳时,我会在毫秒内得到一些奇怪的结果: SELECT '2020-05-15T19:01:59.002+00:00'::timestamp 2020-05-15 19:01:59:02 <--- wrong milliseconds SELECT '2020-05-15T19:01:59.022+00:00'::timestamp 2020-05-15 19:01:59:22 <--- wrong milliseconds SE

我正在处理ISO 8601中的一些日期,当转换为时间戳时,我会在毫秒内得到一些奇怪的结果:

SELECT '2020-05-15T19:01:59.002+00:00'::timestamp
2020-05-15 19:01:59:02 <--- wrong milliseconds

SELECT '2020-05-15T19:01:59.022+00:00'::timestamp
2020-05-15 19:01:59:22 <--- wrong milliseconds

SELECT '2020-05-15T19:01:59.22+00:00'::timestamp
2020-05-15 19:01:59:220 <--- ok, but I'm scared
选择“2020-05-15T19:01:59.002+00:00”::时间戳

2020-05-15 19:01:59:02无论您使用何种技术访问博士后,您所看到的似乎只是一个人工制品。如图所示,实际上对时间戳的转换工作正常。考虑以下事项:

WITH yourTable AS (
    SELECT '2020-05-15T19:01:59.002+00:00'::timestamp AS ts
)

SELECT
    ts,
    EXTRACT(milliseconds FROM ts) AS millis
FROM yourTable;

上述查询正确地生成59002作为时间戳中的毫秒数。

。我认为问题可能是您没有以预期的格式查看输出。@TimBiegeleisen yep!Dbeaver在耍我的把戏!请回答。谢谢你的时间!我在postgres 13的psql中测试了它,它工作正常。也许它也应该在12级研究生中工作。