Точность метки времени JOOQ по запросу

2

У меня есть этот необработанный запрос для 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.

Спасибо!

Теги:
database
jooq

1 ответ

2
Лучший ответ

Используйте 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();
  • 0
    Спасибо! Я не нашел это в доке. Еще один вопрос: как я могу заказать с помощью этого нового поля "as (" refdate ")"?
  • 1
    @ KrizsánBalazs: я буду очень рад ответить на новый вопрос о переполнении стека

Ещё вопросы

Сообщество Overcoder
Наверх
Меню