您好,我必须插入像'17 -09-2012 18:47:52.69'这样的数据。函数PARSEDATETIME减少毫秒。 查询示例:
CREATE TABLE TEST(ID NUMBER(19) not null,
DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
INSERT INTO TEST (ID, DATE) VALUES(1,
parsedatetime('17-09-2012 18:47:52.69', 'dd-MM-yyyy hh:mm:ss.SS'))
在SELECT之后,我看到毫秒是零。
什么是解决方案?
答案 0 :(得分:38)
根据我的测试,使用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
内找到解决方案,则可以在H2中的parsedatetime
函数中使用它。
另一种方法是使用JDBC中定义的ISO时间戳格式。这应该适用于符合JDBC标准的所有数据库:
INSERT INTO TEST VALUES(2, {ts '2012-09-17 18:47:52.69'});