从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中的日期获取月份名称的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Presto 中的日期获取月份名称

如何从 SQL Server 中的日期获取月份编号(不是月份名称)?

如何从python中的日期获取月份名称

从日期获取月份名称

从字符串日期获取包含月份名称的周数

网络套件!使用 freemarker 从日期 DD/MM/YYYY 获取月份名称不起作用