преобразовать временную метку unix в временную метку H2

Как преобразовать значение временной метки unix, например 1348560343598, в H2 Timestamp?

Одна из моих таблиц содержит эти метки времени unix в столбце BIGINT(19), и мне нужно преобразовать их в столбец типа TIMESTAMP.


person vertti    schedule 15.04.2013    source источник


Ответы (1)


Хорошо, с помощью следующей формулы работает:

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

Только не забудьте разделить метку времени на 1000. Использование '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