Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menemukan ulang tahun yang akan datang dengan jOOQ

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencoba menyambung ke host MySQL jarak jauh (kesalahan 2003)

  2. Permintaan SPARQL untuk mendapatkan semua induk dari sebuah simpul

  3. cara memilih semua data yang array inputnya ditemukan dan tidak ditemukan di mysql

  4. Kesalahan #2002 Tidak dapat terhubung ke server MySQL lokal melalui soket '/Applications/MAMP/tmp/mysql/mysql.sock' (2)

  5. Ketik ketidakcocokan:tidak dapat mengonversi dari java.util.Date ke java.sql.Date