web-dev-qa-db-ja.com

Postgresqlでbigintフィールドを日付にフォーマットする方法は?

Bigint型のフィールドを持つテーブルがあります。このフィールドにはタイムスタンプが保存されます。私はこのようなフィールドを日付形式にしたい:

to_char(bigint_field、 'DD/MM/YYYY HH24:MI:SS')

次のエラーが表示されます。

エラー:複数の小数点
 Etat SQL:42601 
43
Stephan
TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')
78
Quassnoi

これは、bigint値が何を表すかによって異なります-エポック時間のオフセットかどうか。

select to_timestamp(20120822193532::text, 'YYYYMMDDHH24MISS')

戻り値

「2012-08-22 19:35:32 + 00」

4
Jordan K

私はこのようにしました:

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;
2
Th3NetForc3