Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit „0000-00-00 00:00:00' DATETIME-Werten in JDBC um?

Wie gehe ich mit „0000-00-00 00:00:00' DATETIME-Werten in JDBC um?

Linda Hamilton
Linda HamiltonOriginal
2025-01-03 15:46:39880Durchsuche

How to Handle

Verarbeitung von „0000-00-00 00:00:00“ DATETIME-Werten in JDBC

Beim Abrufen von DATETIME-Werten aus einer MySQL-Datenbank mit Bei JDBC kann es zu einer Ausnahme kommen, wenn der Wert auf den Quasi-Null-Wert von gesetzt ist „0000-00-00 00:00:00“. Dieses Problem tritt auf, wenn versucht wird, den Wert als Zeichenfolge mithilfe von resultset.getString("add_date") abzurufen, obwohl beabsichtigt ist, eine Rohzeichenfolge zu erhalten.

Alternative Lösung

Eine Problemumgehung für dieses Problem ist die Verwendung der folgenden SQL-Abfrage:

SELECT CAST(add_date AS CHAR) as add_date

Diese Abfrage wandelt den DATETIME-Wert in a um CHAR, um sicherzustellen, dass es als Zeichenfolge abgerufen wird. Aufgrund des zusätzlichen Verarbeitungsaufwands gilt sie jedoch als weniger optimale Lösung.

JDBC-URL-Konfiguration

Ein alternativer Ansatz besteht darin, die JDBC-URL direkt in Ihrer Datenquelle zu konfigurieren Konfiguration:

jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull

Indem Sie die Eigenschaft „zeroDateTimeBehavior“ auf „convertToNull“ festlegen, weisen Sie den JDBC-Treiber an, die zu konvertieren DATETIME-Werte, die nur Nullen sind, werden auf NULL gesetzt, anstatt eine Ausnahme auszulösen.

Quelle und zusätzliche Optionen

Das offizielle MySQL-Handbuch enthält weitere Informationen zum Umgang mit DATETIME, die nur Nullen sind Werte in Connector/J:

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior

Gemäß Laut Handbuch konvertierten Connector/J-Versionen 3.0.x DATETIME-Werte, die nur Nullen sind, standardmäßig in NULL. In Version 3.1 wurde das Standardverhalten jedoch auf das Auslösen einer Ausnahme geändert. Mit der Eigenschaft „zeroDateTimeBehavior“ können Sie dieses Verhalten anpassen, indem Sie eine der folgenden Optionen angeben:

  • Exception (Standard): Eine Ausnahme mit SQLState S1009 auslösen.
  • convertToNull: Konvertieren Sie den Wert in NULL.
  • runden: Runden Sie das Datum auf den nächstliegenden Wert 0001-01-01.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit „0000-00-00 00:00:00' DATETIME-Werten in JDBC um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn