我的代码如下所示:
Session session = sessionFactory.getCurrentSession(); Query countQuery = session. createSQLQuery(queryString); Long totalFilteredRecords = ((Number)countQuery.uniqueResult()) .longValue();
该queryString是:
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_DATE是Date类型。
LAST_UPDATED_DATE
Date
我在SQLDeveloper上运行此SQL,它运行良好,但通过Hibernate以下命令运行时失败:
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。
有人可以帮忙弄清楚有什么问题吗?
找到了答案,这有点出乎意料的简单…将小写日期格式的字符串替换为大写。
更改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'
而且有效。