首页 > 解决方案 > 从 JPQL 中的 current_date 中减去年份

问题描述

我想删除超过 2 年的行。在 SQL 中,我这样做:

DELETE FROM table WHERE creation_date < (current_date - interval '2 year');

现在我想用 JPQL 为我的 Java 中的 JPA 存储库做同样的事情。在 JPQL 中我收到一个错误,因为间隔未知并且“-”(减号)不正确。

JPQL 查询

@Query("DELETE FROM table t WHERE t.creation_date <  (current_date - interval '2 year')")

我会很感激任何建议。

标签: javajpql

解决方案


您可以在应用程序中计算 dateTime,假设您正在LocalDateTime使用creation_date

LocalDateTime dateTime = LocalDateTime.now().minus(Period.ofYears(2));

并在 JPQL 中传递参数

@Query("DELETE FROM table t WHERE t.creation_date < :dateTime")
void deleteByDateTime(LocalDateTime dateTime)

推荐阅读