Field.add()
metode ini terinspirasi oleh interpretasi Oracle tentang
DATE + NUMBER
... di mana NUMBER
(jika Integer
atau Double
) adalah beberapa hari. Apa yang Anda inginkan setara dengan menambahkan INTERVAL YEAR TO MONTH
ke tanggal tertentu. Ini dapat dicapai melalui penggunaan YearToMonth
jenis interval
, jika Anda ingin menambahkan interval konstan. YearToMonth
type juga memperluas java.lang.Number
, dan dengan demikian juga dapat digunakan dengan Field.add()
, secara intuitif.
Meskipun dimungkinkan untuk menghasilkan Field<YearToMonth>
seperti itu melalui jOOQ 3.2 API yang ada, saya yakin Anda akan lebih baik menggunakan SQL biasa, mungkin dengan membuat metode yang dapat digunakan kembali:
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);
}
Ini mungkin tambahan fitur yang berguna untuk #2727 juga...
Sayangnya, berbagai interpretasi dialek SQL tentang aritmatika tanggal waktu sulit untuk distandarisasi. Kami terus meningkatkan berbagai hal di sana, tetapi sering kali, SQL biasa adalah cara terbaik untuk menulis ekspresi aritmatika tanggal dan waktu spesifik dialek.