【问题标题】:JPA 2.0 Date Comparsin JPA queryJPA 2.0 日期比较 JPA 查询
【发布时间】:2015-10-27 22:28:48
【问题描述】:

我正在尝试执行以下查询,但它抛出错误。

SELECT t from Table t where t.status = :status and t.ndate > (t.ndate - 12/24) AND t.ndate < (t.ndate + 12/24)

错误

ERROR: Filter invalid. Cannot compare field ndate of type java.util.Date to value of type long. Numeric comparisons must be between numeric types only

我们还有其他方法吗?

【问题讨论】:

  • 考虑使用FORMAT 将您的日期格式化为前"ddmmyyyy"

标签: java jpa-2.0


【解决方案1】:

(t.ndate - 12/24) 返回一个数值而不是日期,并且不能与java.util.Date 进行比较。

【讨论】:

  • 使用带有函数Date_add的本机查询你必须在java中进行计算
【解决方案2】:

我想您想查询t.ndate 是否在两个固定日期之间。 然后,您可以在 Java 中计算所需的日期,并在查询中使用这些计算出的日期值(在示例中为 :start:end)。通过这种方式,您可以使用普通比较并避免引入对本机查询语言的依赖。 在这种情况下,您最好使用与 BETWEEN 的比较,因为它更具可读性:

t.ndate BETWEEN :start AND :end

另见JPQL SELECT between date statement,尤其是 Java: JPQL date function to add a time period to another date.

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2010-11-23
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多