Postgresql

“錯誤:時間戳超出範圍”將儲存為 bigint 的紀元轉換為時間戳

  • December 19, 2018

ERROR: timestamp out of range: "1.52701e+15"在嘗試將儲存為 bigint 的紀元轉換為時間戳(值取自真實數據庫表)時得到:

select to_timestamp(1527012834506374);
ERROR:  timestamp out of range: "1.52701e+15"

其他轉換方法也不起作用:

select 1527012834506374::abstime::timestamp;
ERROR:  cannot cast type bigint to abstime

select 1527012834506374::integer::abstime::timestamp;
ERROR:  integer out of range

這是一個有效的時代;https://www.epochconverter.com/告訴我 1527012834506374 相當於 2018-05-22 06:13:54.506 UTC

如何在 Postgres 中使用 SQL 進行轉換?

當我將值粘貼1527012834506374https://www.epochconverter.com/時,我看到了警告:

假設此時間戳以微秒為單位(1/1,000,000 秒):

Postgresto_timestamp()假設一個紀元是秒,而不是微秒,所以你需要使用:

select to_timestamp(1527012834506374 / 1000000.0)

引用自:https://dba.stackexchange.com/questions/225386