Wie schreibt bigint (timestamp in Millisekunden) Wert als timestamp in postgresql
Ich versuche zu speichern, in timestamp mit timezone Bereich mein Wert. Es ist in Millisekunden seit 1970.
select TO_CHAR(TO_TIMESTAMP(1401432881230), 'DD/MM/YYYY HH24:MI:SS.MS')
Erwartet 30/5/2014 11:29:42 10:54:41.230
, aber bekommen
22/08/46379 23:27:02.000
select TO_CHAR(TO_TIMESTAMP(1401432881222 / 1000), 'DD/MM/YYYY HH24:MI:SS') || '.' || (1401432881222%1000)
ist guter Stil Abfrage? Zurück30/05/2014 06:54:41.222
to_timestamp
bereits hält Millisekunden, das ist, warum es akzeptiert floating-point-unix-timestamps. Wenn Sie speichern möchten, eine echte Zeitstempel, einfach zu lagern, was es gibt. Wenn Sie formatieren möchten, verwenden SieMS
zur Anzeige von Millisekunden.- Aber in meinem Beispiel (select TO_CHAR(TO_TIMESTAMP(1401432881230), 'DD/MM/YYYY HH24:MI:SS.MS')) ich mache wie du gesagt hast.
InformationsquelleAutor Clyde | 2014-05-30
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unix-timestamps misst die Zeit mit Sekunden, und nicht Millisekunden (fast überall, in PostgreSQL auch).
Daher müssen Sie rufen Sie
Wenn Sie möchten, zu bewahren Millisekunden, rufen Sie mit
double precision
:Dies ist, wie ich convert ms to timestamp und halten ms statt Sekunden.Die akzeptierte Antwort wird drop-ms.
Okay, ich habe verstanden. Meine LEGEN sollten, sieht wie folgt aus:
INSERT INTO events (timestamp) VALUES (to_timestamp(TO_CHAR(TO_TIMESTAMP(1401432881222 /1000), 'YYYY-MM-DD HH24:MI:SS') || '.' || (1401432881222%1000), 'YYYY-MM-DD HH24:MI:SS.MS'))
Ich die Umwandlung vom Datentyp bigint-timestamp mit Millisekunden in den text mit von Ihnen gewünschten format ("YYYY-MM-DD HH24:MI:SS.MS') und übergeben es an to_timestamp Funktion.