Bigint型のフィールドを持つテーブルがあります。このフィールドにはタイムスタンプが保存されます。私はこのようなフィールドを日付形式にしたい:
to_char(bigint_field、 'DD/MM/YYYY HH24:MI:SS')
次のエラーが表示されます。
エラー:複数の小数点 Etat SQL:42601
TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')
これは、bigint値が何を表すかによって異なります-エポック時間のオフセットかどうか。
select to_timestamp(20120822193532::text, 'YYYYMMDDHH24MISS')
戻り値
「2012-08-22 19:35:32 + 00」
私はこのようにしました:
to_timestamp(to_char(20120822193532, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS')
結果は次のようになります。
2012-08-22 19:35:32
また、statemantを選択するときにこれを使用し、データベース列と番号を交換するだけです。
ステップごとの説明:
to_char(20120822193532, '9999-99-99 99:99:99')
これにより、次のような文字列が作成されます。
「2012-08-22 19:35:32」
これで、これをタイムスタンプに簡単に変換できます。
to_timestamp('2012-08-22 19:35:32','YYYY-MM-DD HH24:MI:SS')
結果は以前と同じように見えますが、現在はタイムスタンプになっています。
また、次のようなコマンドにこれを使用する場合
CREATE TABLE table2 AS SELECT to_timestamp(to_char(tb1.date, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS') AS realDate FROM table1 AS tb1;
最終的にtimstamptz(timestampwithタイムゾーン)代わりにtimestamp(timestampwithoutタイムゾーン)。次のように変更できます。
ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;