mengonversi stempel waktu unix ke stempel waktu H2

Bagaimana cara mengonversi nilai stempel waktu unix seperti 1348560343598 ke H2 Timestamp?

Salah satu tabel saya berisi cap waktu unix ini di kolom BIGINT(19) dan saya perlu mengonversinya menjadi kolom bertipe TIMESTAMP.


person vertti    schedule 15.04.2013    source sumber


Jawaban (1)


Oke, menggunakan rumus berikut berfungsi:

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

Ingatlah untuk membagi stempel waktu dengan 1000. Menggunakan 'MILLISECOND' tidak berhasil, Anda akan mendapatkan Numeric value out of range.

person vertti    schedule 15.04.2013
comment
Milidetik tidak berfungsi: ya, saya mengalami masalah yang sama. Ini sebenarnya adalah batasan Calendar.add(int field, int amount), yang digunakan secara internal. H2 tidak lagi menggunakan java.util.Calendar untuk sebagian besar fitur tanggal/waktu karena masalah zona waktu, tetapi dalam kasus ini masih digunakan. - person Thomas Mueller; 15.04.2013
comment
ini sebenarnya menyembunyikannya ke waktu JVM (jadi Anda tidak bisa memaksanya menjadi UTC yang lebih berarti untuk menyimpan stempel waktu dalam database). - person marios; 14.09.2017