Mengendalikan "0000-00-00 00:00:00" Nilai DATETIME dalam JDBC
Apabila mendapatkan semula nilai DATETIME daripada pangkalan data MySQL menggunakan JDBC, anda mungkin menghadapi pengecualian jika nilai ditetapkan kepada nilai separa nol bagi "0000-00-00 00:00:00". Isu ini timbul apabila cuba mendapatkan semula nilai sebagai rentetan menggunakan resultset.getString("add_date"), walaupun niatnya adalah untuk mendapatkan rentetan mentah.
Penyelesaian Alternatif
Penyelesaian untuk isu ini ialah menggunakan pertanyaan SQL berikut:
SELECT CAST(add_date AS CHAR) as add_date
Pertanyaan ini menghantar Nilai DATETIME kepada CHAR, memastikan ia diambil semula sebagai rentetan. Walau bagaimanapun, ia dianggap sebagai penyelesaian yang kurang optimum kerana keperluan pemprosesan tambahannya.
Konfigurasi URL JDBC
Pendekatan alternatif ialah mengkonfigurasi URL JDBC terus dalam sumber data anda konfigurasi:
jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
Dengan menetapkan sifat zeroDateTimeBehavior kepada convertToNull, anda mengarahkan Pemacu JDBC untuk menukar nilai DATETIME semua-sifar kepada NULL dan bukannya membuang pengecualian.
Sumber dan Pilihan Tambahan
Manual MySQL rasmi menyediakan maklumat lanjut tentang cara untuk mengendalikan semua-sifar nilai DATETIME dalam Penyambung/J:
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior
Mengikut kepada manual, Connector/J versi 3.0.x menukar semua-sifar nilai DATETIME kepada NULL secara lalai. Walau bagaimanapun, dalam versi 3.1, tingkah laku lalai telah ditukar kepada membuang pengecualian. Sifat zeroDateTimeBehavior membolehkan anda menyesuaikan tingkah laku ini dengan menyatakan salah satu daripada pilihan berikut:
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai '0000-00-00 00:00:00' DATETIME dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!