2013-04-15 15 views
5

Come si converte un valore di timestamp unix come 1348560343598 in H2 Timestamp?convertire unix timestamp in H2 timestamp

Una delle mie tabelle contiene questi timestamp unix in una colonna BIGINT(19) e ho bisogno di convertirli in una colonna di tipo TIMESTAMP.

risposta

7

Ok, utilizzando la seguente formula funziona:

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

basta ricordarsi di dividere il timestamp con 1000. Utilizzando 'MILLISECOND' non funziona, si otterrà Numeric value out of range.

+2

Il millisecondo non funziona: sì, mi sono imbattuto nello stesso problema. In realtà è una limitazione di 'Calendar.add (int field, int amount)', che viene usata internamente. H2 non usa più 'java.util.Calendar' per la maggior parte delle funzionalità di data/ora, a causa di problemi con i fusi orari, ma in questo caso è ancora usato. –

+0

questo in realtà lo copre a tempo JVM (quindi non si può forzare a essere UTC che è più significativo per la memorizzazione di timestamp in un database). – marios