У меня есть этот необработанный запрос для PSQL, который я хотел бы преобразовать в запрос JOOQ:
SELECT DISTINCT date_trunc('day', ref_date) AS refdate
FROM income
WHERE probos_id = :probosId
Лучшей версией, которую я смог создать, является:
Result<Record1<Timestamp>> result = createQueryBuilder()
.selectDistinct(incomeTable.REF_DATE.cast(Date.class).cast(Timestamp.class).as("refdate"))
.from(incomeTable)
.where(incomeTable.PROBOS_ID.eq(probosId))
.fetch();
Это сгенерированный запрос:
select distinct
cast(cast("public"."income"."ref_date" as date) as timestamp) as "refdate"
from "public"."income"
where "public"."income"."probos_id" = ?
Я хотел бы найти лучший способ установить точность (например, date_trunc в PSQL), чтобы получить необходимое значение без литья doulbe.
Если это возможно, я бы хотел найти собственное решение без расширения DSL.
Спасибо!
Используйте DSL.trunc(Field, DatePart)
, т.е.
Result<Record1<Timestamp>> result = createQueryBuilder()
.selectDistinct(trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate"))
.from(incomeTable)
.where(incomeTable.PROBOS_ID.eq(probosId))
.fetch();