1 回答
TA贡献2021条经验 获得超8个赞
使用TO_CHAR()
有一个待处理的功能请求以添加对供应商特定to_char()功能的支持:https ://github.com/jOOQ/jOOQ/issues/8381
为了对这样的功能进行标准化,需要做更多的研究以确保我们可以涵盖每个供应商在这里实现的所有内容,因为不幸的是格式化逻辑是供应商特定的,并且是字符串类型的。
所以,如果你想使用to_char(),目前,你将不得不求助于使用普通的 SQL 模板,你已经这样做了。您显然可以以可重用的形式分解出该实用程序,例如:
public static Field<String> toChar(Field<?> date, String format) {
return DSL.field("to_char({0}, {1})", SQLDataType.VARCHAR, date, DSL.inline(format));
}
截断日期
当然,在您的特定查询中,您也可以求助于使用标准 SQL 功能,例如CAST(). 我认为您要做的是从您的timestamportimestamptz列中截断时间信息,因此您可以改为这样做:
SELECT count(*), CAST (created_date AS DATE) d
FROM log
GROUP BY d
ORDER BY d
或者使用 jOOQ:
Field<Date> d = LOG.CREATED_DATE.cast(SQLDataType.DATE);
jooq.select(count(), d)
.from(LOG)
.groupBy(d)
.orderBy(d)
.fetch();
添加回答
举报
