JPA 在查询中添加迄今为止的秒数

Big*_*igJ 3 mysql sql date addition jpql

我有一个名为“任务”的表,其中有两列:

  • Date_due:时间戳日期
  • Wait_in_seconds:秒数 (INT)

我想将 Wait_in_seconds 值添加到查询中的日期并将其与当前日期进行比较。

下面的查询没有正确的语法,但它表明了我想要的:

SELECT t
FROM Task t
WHERE (Date_due + Wait_in_seconds) < CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

编辑: KIMI 解释说这对于 JPQL 是不可能的。

编辑 2:这个本机 MySQL 查询可以解决问题:

SELECT *, DATE_ADD(task.date_due, INTERVAL task.wait_seconds SECOND) AS dueDate
FROM task                   
HAVING dueDate < NOW()
ORDER BY dueDate ASC
Run Code Online (Sandbox Code Playgroud)

Kim*_*imi 5

标准 JPQL 不支持此类日期操作。您必须使用本机查询或在 Java 端进行计算,例如使用JodaTime ,它是JSR-310的参考实现。