JPQL 在@Query 注释中检查大于小于今天的日期
Posted
技术标签:
【中文标题】JPQL 在@Query 注释中检查大于小于今天的日期【英文标题】:JPQL Check greater than less than date today in @Query annotation 【发布时间】:2015-06-07 18:11:56 【问题描述】:我想使用 JPQL 检查天气 validTill
日期是否大于 today
。我知道我可以通过以下方式实现这一点。
Query q = em.createQuery("select e from MyEntity e where e.validTill > :today ");
并传递:today
参数。 但这不是我想要的。我想在 Spring 中使用 CrudRepository
中的 @Query
注释来做到这一点。
这是我在CrudRepository
中的代码段
@Query("SELECT e FROM MyEntity e WHERE e.validFrom < TODAY")
Iterable<MyEntity> findAllValid();
我不知道我应该在TODAY
的地方放什么才能得到今天的日期。请帮帮我。
【问题讨论】:
【参考方案1】:我找到了。是这样的。。
@Query("SELECT e FROM MyEntity e WHERE e.validFrom < CURRENT_DATE")
Iterable<MyEntity> findAllValid();
CURRENT_DATE
- 计算为当前日期(java.sql.Date 实例)。
CURRENT_TIME
- 被评估为当前时间(java.sql.Time 实例)。
CURRENT_TIMESTAMP
- 评估为当前时间戳,即日期和时间
(一个 java.sql.Timestamp 实例)。
【讨论】:
java.time.Instant
有解决办法吗?
对于java.time.Instant,你可以将它作为参数传递,我认为@Query("SELECT e FROM MyEntity e WHERE e.validFrom < :date") Iterable<MyEntity> findAllValid(Instant date);
以上是关于JPQL 在@Query 注释中检查大于小于今天的日期的主要内容,如果未能解决你的问题,请参考以下文章