Jooq中的SQL DATE_FORMAT备选方案

3

我正在使用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')
1个回答

9

每当你需要使用 jOOQ 不支持的供应商特定 SQL 功能时,Plain 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));
}

接下来,您可以像使用任何其他 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();

在这种情况下,我可以使用DSL.function而不是编写实用程序吗? - Kaspa Phani Vardhan
1
@KaspaPhaniVardhan,是的,你可以这样做,如果生成的SQL格式为function_name(arg1, arg2, ..., argN) - Lukas Eder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接