1 回答

TA貢獻2021條經(jīng)驗 獲得超8個贊
使用TO_CHAR()
有一個待處理的功能請求以添加對供應商特定to_char()功能的支持:https ://github.com/jOOQ/jOOQ/issues/8381
為了對這樣的功能進行標準化,需要做更多的研究以確保我們可以涵蓋每個供應商在這里實現(xiàn)的所有內(nèi)容,因為不幸的是格式化邏輯是供應商特定的,并且是字符串類型的。
所以,如果你想使用to_char(),目前,你將不得不求助于使用普通的 SQL 模板,你已經(jīng)這樣做了。您顯然可以以可重用的形式分解出該實用程序,例如:
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();
添加回答
舉報