jOOQ का फ़ील्ड .जोड़ें ()
विधि Oracle की
DATE + NUMBER
... जहां NUMBER
(यदि एक पूर्णांक
या डबल
) कई दिनों का है। आप जो चाहते हैं वह SQL मानक INTERVAL YEAR to MONTH
. को जोड़ने के बराबर है किसी दी गई तारीख को। इसे jOOQ's YearToMonthका उपयोग करके प्राप्त किया जा सकता है। कोड> अंतराल प्रकार
, यदि आप एक निरंतर अंतराल जोड़ना चाहते हैं। YearToMonth
प्रकार java.lang.Number
का भी विस्तार करता है , और इस प्रकार फ़ील्ड जोड़ें ()
, सहज रूप से।
हालांकि ऐसा फ़ील्ड
. उत्पन्न करना संभव हो सकता है मौजूदा jOOQ 3.2 API के माध्यम से, मेरा मानना है कि आप केवल सादा 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 बोलियों की दिनांक समय अंकगणित की व्याख्या को मानकीकृत करना कठिन है। हम वहां लगातार चीजों में सुधार कर रहे हैं, लेकिन अक्सर, सादा एसक्यूएल बोली-विशिष्ट दिनांक समय अंकगणितीय अभिव्यक्ति लिखने का सबसे अच्छा तरीका है।