如何在不使用绑定的情况下格式化HQL日期字符串以进行查询?

时间:2014-10-28 16:32:13

标签: hibernate hql

我所处的位置我需要能够在两个日期之间查询数据库(java.util.Date),但是我不能使用将日期绑定到查询中的参数的标准方法。

我正在客户端代码中动态生成过滤器(使用GWT)附加到我们的" get"用于我们所有数据请求的方法。我正在努力创造一个简单的"其中"这样的条款:

where groupCheckInDate >= 2014-10-01 00:00:00 AND groupCheckInDate <= 2014-10-31 00:00:00

我已经在我能想到的任何地方进行了搜索,并且只能找到我的日期字符串格式错误的线索。我尝试使用 yyyy-MM-dd HH:mm:ss 作为我的格式字符串,但这不起作用。我收到以下错误:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 00 
near line 1, column 84 [from Receipts where date >= 
2014-10-01 00:00:00 AND date <= 2014-10-31 00:00:00 order by id]

1 个答案:

答案 0 :(得分:0)

如果你真的必须使用内嵌字符串,你应该逃避它们。例如,这适用于SQL Server:

where groupCheckInDate >= '2014-10-01 00:00:00' 
  AND groupCheckInDate <= '2014-10-31 00:00:00'

关键是hql解析器会将''之间的内容视为单个语句。没有它,每个数字都会被评估......导致异常