web-dev-qa-db-ja.com

「エラー:タイムスタンプが範囲外です」bigintとして保存されているエポックをタイムスタンプに変換します

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を使用して変換するにはどうすればよいですか?

4
Colin 't Hart

値_1527012834506374_を https://www.epochconverter.com/ に貼り付けると、次の警告が表示されます。

このタイムスタンプがマイクロ秒(1/1,000,000秒)であると仮定します:

Postgresのto_timestamp()は、マイクロ秒ではなく、秒のエポックを想定しているため、以下を使用する必要があります。

_select to_timestamp(1527012834506374 / 1000000.0)
_