【问题标题】:H2 database string to timestampH2 数据库字符串到时间戳
【发布时间】:2012-12-17 19:02:01
【问题描述】:

在 H2 数据库中插入时间戳

您好,我必须插入像“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 之后,我看到毫秒为零。

什么是解决方案?

【问题讨论】:

    标签: h2 milliseconds timestamp


    【解决方案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中找到解决方案,可以在H2的parsedatetime函数中使用。

    另一种方法是使用 JDBC 中定义的 ISO 时间戳格式。这应该适用于所有符合 JDBC 标准的数据库:

    INSERT INTO TEST VALUES(2, {ts '2012-09-17 18:47:52.69'});
    

    【讨论】:

      猜你喜欢
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多