我使用oracle和hql
我有这个问题:
Query query = getSession().createQuery("FROM RequestHealthCertificate rs WHERE rs.requestDateHcertif between to_date(:pstartDate,'MM/DD/YYYY') and to_date(:pendDate,'MM/DD/YYYY')");
//Query query = getSession().createQuery("FROM RequestHealthCertificate rs WHERE rs.requestDateHcertif between :pstartDate and :pendDate");
query.setParameter("pstartDate", startDate);
query.setParameter("pendDate", endDate);
这是日期的一个例子,将使用 to_date 星期四07月12日00:00:00 CET 2013
进行转换但是当我测试时我有这个错误:
ERROR [org.hibernate.util.JDBCExceptionReporter] (http-localhost-127.0.0.1-8080-1) ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique
09:07:49,635 INFO [org.directwebremoting.log.accessLog] (http-localhost-127.0.0.1-8080-1) Method execution failed: : org.hibernate.exception.DataException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:102) [hibernate3.jar:3.5.3-Final]
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) [hibernate3.jar:3.5.3-Final]
答案 0 :(得分:1)
您必须确保这些变量的类型为String而不是DATE,并且它们必须具有相同的格式。
答案 1 :(得分:0)
如果开始日期和结束日期均为DATE类型,则无需进行转换。 如果两个值均为字符串类型,则只需进行转换
答案 2 :(得分:-1)
您应该尝试使用此方法设置日期而不是使用to_date。
http://www.roseindia.net/hibernate/examples/hql/HQL-date-Between.html