61

bigint型のフィールドを持つテーブルがあります。このフィールドにはタイムスタンプが格納されます。次のようにフィールドの日付をフォーマットしたい:

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

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

エラー:小数点が複数あります
ÉtatSQL:42601
4

4 に答える 4

114
TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS')
于 2011-03-30T11:13:01.017 に答える
9

これは私のために働いたものです

to_timestamp( bigint_field/1000)::date
于 2020-11-10T23:16:31.770 に答える
5

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

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

戻り値

"2012-08-22 19:35:32 + 00"

于 2012-08-22T19:40:16.043 に答える
2

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

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タイムゾーンのあるタイムスタンプ)になってしまう可能性があります。次のように変更できます。

ALTER TABLE table2 ALTER realDate SET DATA TYPE timestamp USING realDate;
于 2017-01-06T13:50:21.643 に答える