【问题标题】:Hibernate query date compare month only休眠查询日期仅比较月份
【发布时间】:2016-08-09 05:08:22
【问题描述】:

我需要从 MySQL 表中获取一些记录,该表的列 posted_dateTimestamp。我只需要通过比较月份来过滤记录。例如,我只想要本月发布的所有记录。

我按照此链接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中如何以月份为参数只与月份比较?

【问题讨论】:

    标签: java mysql spring hibernate


    【解决方案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的信息。
    猜你喜欢
    • 2012-10-10
    • 2012-09-06
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2010-09-18
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多