Я пытаюсь получить данные в пределах интервала времени на Java Spring, используя базу данных Postgresql. Один из запросов, которые я использую, работает просто отлично (возвращает данные за последние 24 часа):
@Query(value = "SELECT timestamp,lettura,stato FROM dati_impianti
WHERE sigla_impianto = :impianto and timestamp > now() - interval '24 hours'
ORDER BY timestamp DESC", nativeQuery = true)
List<ReadingEntity> findLastDay(@Param("impianto") String s);
Однако, когда я пытаюсь вернуть данные с другой отметкой времени, я получаю PSQL исключение:
@Query(value = "SELECT timestamp,lettura,stato FROM dati_impianti
WHERE sigla_impianto = :impianto and timestamp > :timestamp - interval '24 hours'
ORDER BY timestamp DESC", nativeQuery = true)
List<ReadingEntity> findDate(@Param("impianto") String s, @Param("timestamp") Timestamp t);
И это исключение, которое я получаю:
org.postgresql.util.PSQLException: ERROR: operator does not exist: timestamp without time zone > interval
No operator matches the given name and argument types. You might need to add explicit type casts.
Что я не могу понять, так это то, что, согласно документации PostgreSQL, timestamp - интервал должен возвращать другую timestamp . Однако из моего запроса кажется, что я сравниваю отметку времени (из таблицы) с интервалом , что неверно. Если я попытаюсь напрямую использовать свой параметр метки времени (в виде отметка времени>: отметка времени без сокращения его на интервал), это сработает, но это не то, что я искал.
I также пытался явным образом привести приведение, используя : timestamp :: timestamp , но, похоже, это приводит к другому типу ошибки из-за Spring и способа обработки параметров.