我有一个 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" = ?
我想找到一种更好的方法来设置精度(如 PSQL 中的 date_trunc )以获得必要的值,而无需进行双重转换。
如果可能的话,我想找到一个不扩展 DSL 的本地解决方案。
Thanks!
Use DSL.trunc(Field, DatePart) https://www.jooq.org/javadoc/latest/org/jooq/impl/DSL.html#trunc-org.jooq.Field-org.jooq.DatePart-, i.e.
Result<Record1<Timestamp>> result = createQueryBuilder()
.selectDistinct(trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate"))
.from(incomeTable)
.where(incomeTable.PROBOS_ID.eq(probosId))
.fetch();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)