Я пытаюсь написать этот запрос с помощью jOOQ для Postgres:
SELECT * FROM my_table t WHERE t.instant1 - t.instant2 > interval '1 days';
Поэтому я написал это:
Duration oneDay = Duration.ofDays(1);
using(configuration)
.selectFrom(MY_TABLE)
.where(MY_TABLE.INSTANT1.minus(MY_TABLE.INSTANT2).gt(oneDay))
Но он не компилируется из-за:
Не удается разрешить метод 'lt (java .time.Duration)'
Я попытался обернуть oneDay
в val()
, а затем ошибка изменилась на :
Не удается разрешить метод 'lt (org.jooq.Param)'
Мне кажется, проблема в том, что метод minus
возвращает Field<Instant>
вместо Field<Duration>
, но в Postgres, при вычитании 2 TIMESTAMP WITH TIME ZONE
результат равен interval
.
Вдоль этих строк jOOQ даже позволил мне написать этот запрос, который потерпит неудачу во время выполнения, как типы не выстроится в линию:
using(configuration)
.selectFrom(MY_TABLE)
.where(MY_TABLE.INSTANT1.minus(MY_TABLE.INSTANT2).gt(Instant.now()))
Есть ли другой метод jOOQ, который я могу использовать? кроме того, что-то вроде:
"{0} - {1} > interval '1 day'"
Спасибо.