JPA добавить секунды к дате в запросе - PullRequest
3 голосов
/ 31 октября 2011

У меня есть таблица с именем «Задача», в которой, помимо прочего, есть два столбца:

  • Date_due: дата TIMESTAMP
  • Wait_in_seconds: число (INT) секунд

Я хочу добавить значение Wait_in_seconds к дате в запросе и сравнить ее с текущей датой.

В приведенном ниже запросе отсутствует правильный синтаксис, но он указывает, чтоЯ хочу:

SELECT t
FROM Task t
WHERE (Date_due + Wait_in_seconds) < CURRENT_TIMESTAMP

Редактировать: 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

1 Ответ

4 голосов
/ 31 октября 2011

Стандартный JPQL не поддерживает такие операции с датами.Вам придется либо использовать собственный запрос, либо выполнить вычисления на стороне Java, например с JodaTime , который является эталонной реализацией JSR-310 .

...