簡體   English   中英

將 ISO8601 日期文本轉換為時間戳

[英]Casting ISO8601 date text to Timestamp

我正在處理 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

我嘗試使用to_timestamp()但找不到解決字符串中 T 的方法。 任何指導表示贊賞!

從您用於訪問 Postgres 的任何技術的角度來看,您所看到的似乎只是一個人工制品。 本演示所示,實際上您的時間戳轉換工作正常。 考慮以下:

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;

上述查詢正確生成 59,002 作為時間戳中的毫秒數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM