休眠查询日期仅比较月份
Posted
技术标签:
【中文标题】休眠查询日期仅比较月份【英文标题】:Hibernate query date compare month only 【发布时间】:2016-08-09 05:08:22 【问题描述】:我需要从 mysql 表中获取一些记录,该表的列 posted_date
是 Timestamp
。我只需要通过比较月份来过滤记录。例如,我只想要本月发布的所有记录。
我按照此链接Hibernate query date compare on year and month only中给出的方法进行了尝试
但我得到以下错误
line 1:106: unexpected token: to_char
at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:769)
HQL中如何以月份为参数只与月份比较?
【问题讨论】:
【参考方案1】:像这样使用 MONTH(...) HQL 函数:
select so from SomeObject so where MONTH(so.date) = MONTH(:date)
或(简单但与数据库无关 - 适用于 Oracle/PostgreSQL/H2)
select so from SomeObject so where TO_CHAR(so.date, 'MM') = :month_as_string
【讨论】:
from SomeObject so where MONTH(so.date) = :date
工作正常。,谢谢。
如果对您有帮助,请将此答案标记为正确。
方式 2 不工作!错误:“TO_CHAR”不是可识别的内置函数名。
@Lê Công Tuấn Vũ - 值得一提的是第二种方式与数据库无关。它适用于 Oracle/PostgreSQL/H2。你可以阅读更多关于HQL Date Formats here的信息。以上是关于休眠查询日期仅比较月份的主要内容,如果未能解决你的问题,请参考以下文章