对 hsqldb 运行休眠时无法解析的日期

Posted

技术标签:

【中文标题】对 hsqldb 运行休眠时无法解析的日期【英文标题】:Unparseable date when running hibernate against hsqldb 【发布时间】:2014-08-19 10:39:04 【问题描述】:

我已经从 oracle db 中导出了 sql,其中有这一行:

to_timestamp('23-APR-09 06.11.52.000000000 PM','DD-MON-RR HH.MI.SS.FF AM')

我有一个名为Test 的类,它有一个名为date 的实例TimeStamp。喜欢:

@Entity class Test

   TimeStamp date

当我尝试运行这些代码时:

session.createSQLQuery("insert into Test (date) values(to_timestamp('23-APR-09 06.11.52.000000000 PM','DD-MON-RR HH.MI.SS.FF AM'))").executeUpdate()

我得到一个例外:

org.hibernate.exception.DataException: could not execute native bulk manipulation query
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:102)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:219)
    at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1300)
    at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:365)
Caused by: java.sql.SQLException: data exception: invalid datetime format: java.text.ParseException: Unparseable date: "23-APR-09 06.11.52.000000000 PM"
    at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:210)
    ... 6 more
Caused by: org.hsqldb.HsqlException: data exception: invalid datetime format: java.text.ParseException: Unparseable date: "23-APR-09 06.11.52.000000000 PM"
    ... 7 more

我哪里出错了?

【问题讨论】:

【参考方案1】:

尝试以下方法:

insert into Test (date) values(to_timestamp('23-APR-09 06.11.52.000000000 PM','DD-MON-YY HH.MI.SS.FF AM'))

根据位于http://www.hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html#bfc_datetime_format 的 HSQL 文档,当使用 R 表示法表示年份时,它必须是四个 R (RRRR)。 . .但 。 . .您的定义是两位数的年份,因此请改用 YY

【讨论】:

以上是关于对 hsqldb 运行休眠时无法解析的日期的主要内容,如果未能解决你的问题,请参考以下文章

在 HSQLDB 上使用 Spring DBUnit 进行休眠和 Spring 数据 - 由于外键约束而无法删除

休眠查询异常:在 JPA 查询期间无法解析实体属性

我无法将 csv 文件中的日期信息解析为 ipython

错误代码:38 DB::Exception:无法解析日期:值太短:无法从字符串解析日期:执行“FUNCTION toDate()”时

数据库 Hsqldb 无法区分日期和时间戳

Java Android Studio - 使用 Android 10 的物理设备上出现无法解析的日期错误