Rumah > pangkalan data > tutorial mysql > Bagaimana Mengendalikan Nilai '0000-00-00 00:00:00' DATETIME dalam JDBC?

Bagaimana Mengendalikan Nilai '0000-00-00 00:00:00' DATETIME dalam JDBC?

Linda Hamilton
Lepaskan: 2025-01-03 15:46:39
asal
936 orang telah melayarinya

How to Handle

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
Salin selepas log masuk

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
Salin selepas log masuk

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:

  • pengecualian (lalai): Lemparkan pengecualian dengan SQLState S1009.
  • convertToNull: Tukar nilai kepada NULL.
  • pusingan: Bundarkan tarikh kepada nilai terdekat, iaitu 0001-01-01.

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan