質問

タイプBIGINTのフィールドを持つテーブルがあります。このフィールドはタイムスタンプを保存します。 このようなフィールドをデートしたい:

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

次のエラーが発生します:

ERROR: multiple decimal points
État 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を選択してください。データベースColunmで番号を交換するだけです。

ステップバイステップ説明:

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; 
.

timestamp の代わりに タイムゾーンでTimestamp で終わるかもしれません(timestamp 時間帯なしで)。あなたはこのようにそれを変えることができます:

ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top