2013-04-15 13 views
5

Wie konvertiere ich Unix Zeitstempel Wert wie 1348560343598 zu H2 Timestamp?konvertieren Unix Zeitstempel zu H2 Zeitstempel

Eine meiner Tabellen enthält diese Unix-Zeitstempel in einer BIGINT(19) Spalte und ich muss sie in eine Spalte des Typs TIMESTAMP konvertieren.

Antwort

7

Ok, die folgende Formel funktioniert:

select DATEADD('SECOND', 1348560343, DATE '1970-01-01') 

Denken Sie daran, den Zeitstempel mit 1000. Mit 'MILLISECOND' teilen nicht funktioniert, werden Sie Numeric value out of range bekommen.

+2

Millisekunde funktioniert nicht: Ja, ich stieß auf das gleiche Problem. Es ist eine Einschränkung von 'Calendar.add (int field, int betrag) ', die intern verwendet wird. H2 verwendet 'java.util.Calendar' nicht mehr für die meisten Datum/Uhrzeit-Funktionen, da Probleme mit Zeitzonen auftreten, aber in diesem Fall wird es immer noch verwendet. –

+0

Dies wandelt es tatsächlich in JVM-Zeit um (Sie können also nicht erzwingen, dass es UTC ist, was für das Speichern von Zeitstempeln in einer Datenbank sinnvoller ist). – marios