mysql - 从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());
}
}
};
}
推荐阅读
- r - png、pdf、tiff 边距限制
- javascript - innerHTML 到属性值纯 JavaScript
- mongodb - 根据多级对象值过滤嵌套数组并更新它们 - MongoDB聚合+更新
- python-3.8 - 如何在命令提示符下保存 python 代码?
- android - 缓存视频 Firestore
- yaml - 为什么 Swagger Codegen 将 ON/OFF 字符串枚举转换为 TRUE/FALSE?
- javascript - React.useState 返回的 setState 函数中的不同函数签名如何区分?
- c++ - 为什么此 NVIDIA CUDA PTX 无法按预期工作?
- ios - 当 iPhone 处于黑暗模式时,有什么方法可以获得浅色图像?
- html - 我希望我的 html 表给出图片中显示的结果