繁体   English   中英

从 jooq 中的日期获取月份名称

[英]Get month name from Date in jooq

如何从jooq中的这个日期对象生成月份的名称(例如:Oct/October)?

日期-“2019-11-01 00:00:00”

想从日期中提取月份名称。

产量 - 11 月

提前致谢。

您可以使用DSL.month(Field)提取月份编号。

jOOQ 不支持供应商特定的开箱即用的日期时间格式功能。 您可以使用纯 SQL 模板来使用供应商特定的功能,例如:

// 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());
      }
    }
  };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM