PostgresでBIGINT
をTIMESTAMP
またはTIMESTAMP WITH TIME ZONE
にキャストする方法はありますか? BIGINT
列からTIMESTAMP
列にデータをコピーする必要があります。
これが私が試したものです:
update table
set date__timestamp = date__bigint::timestamp
where foo = 1;
エラー:タイムゾーンなしでタイプbigintをタイムスタンプにキャストできません
私はタイムスタンプ列をタイムゾーン付きの列に変更してこれを試しました:
update table
set date__timestamp = date__bigint::timestamp with time zone at time zone 'PST'
where foo = 1;
エラー:タイプbigintをタイムゾーン付きのタイムスタンプにキャストできません
update table
set date__timstamp = TO_CHAR(TO_TIMESTAMP(date__bi / 1000), 'DD/MM/YYYY HH24:MI:SS')
where foo = 1;
エラー:列「date__timestamp」はタイムゾーンなしのタイムスタンプタイプですが、式はテキストタイプですヒント:式を書き換えるかキャストする必要があります。
データは次のようになります。
date_bigint: 20181102
date_timestamp: 2018-11-02 17:00:00.000000
キャストにデフォルト値を渡す必要がありますか?
より簡単な方法は、bigintからvarcharに変更し、次にvarcharからtimestampに変更することです。
alter table tablename alter column colname type varchar(30) USING colname::varchar;
その後
alter table tablename alter column colname type timestamp USING colname::timestamp;