基于以下问题:JOOQ Timestamp precision on query
这是我所拥有的查询:
Result<Record1<Timestamp>> result = createQueryBuilder()
.selectDistinct(trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate"))
.from(incomeTable)
.where(incomeTable.PROBOS_ID.eq(probosId))
.fetch();
我想通过.orderBy()
字段将as("refdate")
添加到where。
答案 0 :(得分:1)
您有几种选择,最简单的选择是将投影的列表达式分配给局部变量,并在查询中重复使用两次
Field<Timestamp> refdate = trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate");
Result<Record1<Timestamp>> result = createQueryBuilder()
.selectDistinct(refdate)
.from(incomeTable)
.where(incomeTable.PROBOS_ID.eq(probosId))
.orderBy(refdate)
.fetch();
或者,如果不可能的话,使用DSL.field(Name)
为order by子句创建一个新的字段引用:
Result<Record1<Timestamp>> result = createQueryBuilder()
.selectDistinct(trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate"))
.from(incomeTable)
.where(incomeTable.PROBOS_ID.eq(probosId))
.orderBy(field(name("refdate"))
.fetch();