小编典典

休眠-使用sqlQuery时,出现``ata异常:无效的日期时间格式''问题

sql

我的代码如下所示:

Session session = sessionFactory.getCurrentSession();
        Query countQuery = session.
                createSQLQuery(queryString);
        Long totalFilteredRecords = ((Number)countQuery.uniqueResult())
                .longValue();

queryString是:

SELECT COUNT(id)
FROM SOME_TABLE
WHERE
  to_char(LAST_UPDATED_DATE, 'yyyy-mm-dd hh:mi:ss')
BETWEEN
  '2015-11-13 11:40:03'
AND
  '2015-11-13 11:34:03'

LAST_UPDATED_DATEDate类型。

我在SQLDeveloper上运行此SQL,它运行良好,但通过Hibernate以下命令运行时失败:

org.hibernate.util.JDBCExceptionReporter: SQL Error: -3407, SQLState: 22007
org.hibernate.util.JDBCExceptionReporter: data exception: invalid datetime format: yyyy-mm-dd hh:mi:ss

我的数据库是Oracle。

有人可以帮忙弄清楚有什么问题吗?


阅读 193

收藏
2021-05-16

共1个答案

小编典典

找到了答案,这有点出乎意料的简单…将小写日期格式的字符串替换为大写。

更改queryString为:

SELECT COUNT(id)
FROM SOME_TABLE
WHERE
  to_char(LAST_UPDATED_DATE, 'YYYY-MM-DD HH24:MI:SS')
BETWEEN
  '2015-11-13 11:40:03'
AND
  '2015-11-13 11:34:03'

而且有效。

2021-05-16