【问题标题】:Create Query matching for current date [duplicate]为当前日期创建查询匹配[重复]
【发布时间】:2012-09-10 15:19:36
【问题描述】:
可能重复:
Example of using CURRENT_DATE in JPA query
我正在尝试向我的存储库添加一个查询,以将存储在数据库中的日期与当前日期进行比较。
我的查询是这样的:
@Query("Select c from Customer c where c.terminated != 1 or c.terminationDate > <currentDate>")
public List<Customer> getTerminatedCustomers();
我可以为<currentDate> 插入什么?
如果一切都失败了,我可以向该方法添加一个参数并将当前日期传递给这样的查询。但如果可能的话,我更喜欢更优雅的解决方案。
【问题讨论】:
标签:
jpa
spring-data
spring-data-jpa
【解决方案1】:
这个问题实际上是this one的重复。根据 Java Persistence API 规范第 4.6.17.2.3 节,有预定义函数 CURRENT_DATE、CURRENT_TIME 和 CURRENT_TIMESTAMP。所以查询必须定义为
select c from Customer c where c.terminated != 1 or c.terminationDate > CURRENT_DATE
【讨论】:
-
关于 CURRENT_DATE 是一个标准的 JPA 函数并且它应该在所有 JPA 提供程序和 RDBMS 中以相同的方式工作这一事实,当在 Hibernate 中与 SQL Server 一起使用时它应该是 CURRENT_DATE()。 (proof)