jOOQのフィールド.add()
メソッドは、Oracleの
DATE + NUMBER
...ここでNUMBER
(整数
の場合 またはDouble
)は日数です。必要なのは、SQL標準の INTERVAL YEAR TO MONTH
を追加するのと同じです。 与えられた日付に。これは、jOOQのYearToMonthコード> インターバルタイプ
、一定の間隔を追加したい場合。 YearToMonth
タイプはjava.lang.Number
も拡張します 、したがって、 Field.add()
、直感的に。
そのようなField
を生成することは可能かもしれませんが 既存のjOOQ3.2APIを使用すると、おそらく再利用可能なメソッドを作成することで、プレーンSQLに頼るほうがよいと思います。
public static <T extends java.util.Date>
Field<T> dateInCurrentYear(Field<T> field) {
return DSL.field("DATE_ADD({0}, INTERVAL YEAR(CURDATE()) - YEAR({0}) YEAR)",
field.getDataType(),
field);
}
これは、#2727 の便利な機能追加になる可能性があります 同様に...
残念ながら、さまざまなSQL方言による日時演算の解釈を標準化するのは困難です。そこでは常に改善を行っていますが、多くの場合、方言固有の日時算術式を作成するには、プレーンSQLが最適な方法です。