在Jooq中使用SQL DATE_FORMAT

Mr.*_*ava 3 java mysql sql jooq

我正在使用3.5 jooq版本

我知道jooq不支持DATE_FORMAT函数,但是有什么替代方法

这是我要使用JOOQ创建的查询

SELECT DATE_FORMAT(`date_create`, '%d/%m/%Y') AS date_create FROM users
GROUP BY DATE_FORMAT(`date_create`, '%d/%m/%Y')
Run Code Online (Sandbox Code Playgroud)

Luk*_*der 6

只要您需要开箱即用的jOOQ不支持的特定于供应商的SQL功能,纯SQL API就是您的朋友。这样编写一个实用程序:

public static Field<String> dateFormat(Field<Date> field, String format) {
    return DSL.field("date_format({0}, {1})", SQLDataType.VARCHAR, 
        field, DSL.inline(format));
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以像使用其他任何jOOQ提供的功能一样使用它:

DSL.using(configuration)
   .select(dateFormat(USERS.DATE_CREATE, "%d/%m/%Y").as("date_create"))
   .from(USERS)
   .groupBy(dateFormat(USERS.DATE_CREATE, "%d/%m/%Y"))
   .fetch();
Run Code Online (Sandbox Code Playgroud)