从jooq中的日期获取月份名称
Posted
技术标签:
【中文标题】从jooq中的日期获取月份名称【英文标题】:Get month name from Date in jooq 【发布时间】:2020-06-17 15:14:32 【问题描述】:如何从 jooq 中的这个日期对象生成月份的名称(例如:Oct/October)?
日期-“2019-11-01 00:00:00”
想从日期中提取月份名称。
输出 - 11 月
提前致谢。
【问题讨论】:
【参考方案1】:您可以使用DSL.month(Field)
提取月份编号。
jOOQ 不支持特定于供应商的开箱即用日期时间格式化功能。您可以使用plain SQL templating 来使用供应商特定的功能,例如:
// mysql
public static Field<String> formatMonth(Field<Timestamp> dateColumn)
return DSL.field("date_format(0, '%M')", SQLDataType.VARCHAR, dateColumn);
// PostgreSQL
public static Field<String> formatMonth(Field<Timestamp> dateColumn)
return DSL.field("to_char(0, 'Month')", SQLDataType.VARCHAR, dateColumn);
如果您需要多次执行此操作并且不想总是担心与供应商无关,您可以创建一个CustomField
:
public static Field<String> formatMonth(Field<Timestamp> dateColumn)
return new CustomField<String>("format_month", SQLDataType.VARCHAR)
@Override
public void accept(Context<?> ctx)
switch (ctx.family())
case MYSQL:
ctx.visit(DSL.field("date_format(0, '%M')", SQLDataType.VARCHAR, dateColumn));
break;
case POSTGRES:
ctx.visit(DSL.field("to_char(0, 'Month')", SQLDataType.VARCHAR, dateColumn));
break;
default:
throw new UnsupportedOperationException("Dialect not supported: " + ctx.family());
;
【讨论】:
以上是关于从jooq中的日期获取月份名称的主要内容,如果未能解决你的问题,请参考以下文章