Ответ 1
Согласно моему тесту, с версией H2 1.3.170 миллисекунды на самом деле не равны нулю, но 069:
select * from test;
ID DATE
1 2012-09-17 18:47:52.069
То же самое происходит, если вы запустите:
call parsedatetime('17-09-2012 18:47:52.69', 'dd-MM-yyyy hh:mm:ss.SS');
Если вы добавляете нуль, то он работает:
call parsedatetime('17-09-2012 18:47:52.690', 'dd-MM-yyyy hh:mm:ss.SS');
H2 внутренне использует java.text.SimpleDateFormat
, поэтому он должен жить с теми же ограничениями. Если вы найдете решение в SimpleDateFormat
, вы можете использовать его в функции parsedatetime
в H2.
Альтернативой является использование формата временной метки ISO, как определено в JDBC. Это должно работать со всеми базами данных, которые соответствуют стандарту JDBC:
INSERT INTO TEST VALUES(2, {ts '2012-09-17 18:47:52.69'});