Wie formatiere bigint Feld in ein date in Postgresql?

Ich habe einen Tisch mit einem Feld vom Typ Bigint. Dieses Feld speichert einen timestempel. Ich möchte das Feld wie folgt formatieren:

  to_char (bigint_field, 'TT / MM / JJJJ HH24: MI: SS') 

Ich erhalte den folgenden Fehler:

 FEHLER: mehrere Dezimalstellen
 État SQL: 42601

Solutions Collecting From Web of "Wie formatiere bigint Feld in ein date in Postgresql?"

TO_CHAR(TO_TIMESTAMP(bigint_field / 1000), 'DD/MM/YYYY HH24:MI:SS') 

Dies hängt davon ab, was der Bigint-Wert darstellt – Offset der Epochenzeit oder nicht.

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

kehrt zurück

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

Ich habe es so gemacht:

 to_timestamp(to_char(20120822193532, '9999-99-99 99:99:99'),'YYYY-MM-DD HH24:MI:SS') 

Das Ergebnis sieht folgendermaßen aus:

2012-08-22 19:35:32

Sie können dies auch verwenden, indem Sie StateMant wählen, tauschen Sie einfach die Nummer mit Ihrer database Colunm.

Schritt für Schritt Erklärung:

 to_char(20120822193532, '9999-99-99 99:99:99') 

Dies wird eine characterfolge wie folgt erstellen:

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

Jetzt können wir das einfach in einen timestempel umwandeln:

 to_timestamp('2012-08-22 19:35:32','YYYY-MM-DD HH24:MI:SS') 

Das Ergebnis sieht genauso aus wie zuvor, aber es ist jetzt ein timestempel.

Auch wenn Sie dies für einen Befehl wie verwenden

 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; 

Sie könnten mit timstamptz (timestempel mit timezone) anstelle von timestempel (timestempel ohne timezone) enden. Du kannst es so ändern:

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