แปลงการประทับเวลา Unix เป็นการประทับเวลา H2

ฉันจะแปลงค่าการประทับเวลายูนิกซ์เช่น 1348560343598 เป็น H2 Timestamp ได้อย่างไร

ตารางหนึ่งของฉันมีการประทับเวลายูนิกซ์เหล่านี้ในคอลัมน์ BIGINT(19) และฉันต้องแปลงให้เป็นคอลัมน์ประเภท TIMESTAMP


person vertti    schedule 15.04.2013    source แหล่งที่มา


คำตอบ (1)


ตกลง ใช้สูตรต่อไปนี้ได้ผล:

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

อย่าลืมหารการประทับเวลาด้วย 1,000 การใช้ 'MILLISECOND' ไม่ได้ผล คุณจะได้ Numeric value out of range

person vertti    schedule 15.04.2013
comment
มิลลิวินาทีไม่ทำงาน ใช่ ฉันประสบปัญหาเดียวกัน จริงๆ แล้วมันเป็นข้อจำกัดของ Calendar.add(int field, int amount) ซึ่งใช้ภายใน H2 ไม่ใช้ java.util.Calendar อีกต่อไปสำหรับคุณลักษณะวันที่/เวลาส่วนใหญ่ เนื่องจากปัญหาเกี่ยวกับเขตเวลา แต่ในกรณีนี้ ยังคงใช้คุณลักษณะนี้อยู่ - person Thomas Mueller; 15.04.2013
comment
สิ่งนี้จะแปลงเป็นเวลา JVM จริง ๆ (ดังนั้นคุณไม่สามารถบังคับให้เป็น UTC ซึ่งมีความหมายมากกว่าสำหรับการจัดเก็บการประทับเวลาในฐานข้อมูล) - person marios; 14.09.2017