ホームページ >データベース >mysql チュートリアル >JDBC で「0000-00-00 00:00:00」DATETIME 値を処理するにはどうすればよいですか?
JDBC での "0000-00-00 00:00:00" DATETIME 値の処理
使用して MySQL データベースから DATETIME 値を取得する場合JDBC では、値が準 null に設定されている場合、例外が発生する可能性があります。値は「0000-00-00 00:00:00」です。この問題は、生の文字列を取得することが目的であっても、resultset.getString("add_date") を使用して値を文字列として取得しようとすると発生します。
代替ソリューション
この問題の回避策は、次の SQL クエリを使用することです。
SELECT CAST(add_date AS CHAR) as add_date
このクエリは、 DATETIME 値を CHAR に変換し、文字列として取得されるようにします。ただし、追加の処理要件があるため、最適なソリューションではないと考えられています。
JDBC URL 構成
別のアプローチは、データソースで JDBC URL を直接構成することです。 configuration:
jdbc:mysql://yourserver:3306/yourdatabase?zeroDateTimeBehavior=convertToNull
zeroDateTimeBehavior プロパティを ConvertToNull に設定することで、例外をスローする代わりに、すべてゼロの DATETIME 値を NULL に変換する JDBC ドライバー。
ソースと追加オプション
公式 MySQL マニュアルに、その方法の詳細が記載されています。すべてゼロの DATETIME 値を処理しますConnector/J:
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html#property_zeroDateTimeBehavior
によるとマニュアルによると、Connector/J バージョン 3.0.x では、デフォルトですべてゼロの DATETIME 値が NULL に変換されました。ただし、バージョン 3.1 では、デフォルトの動作が例外をスローするように変更されました。 zeroDateTimeBehavior プロパティを使用すると、次のオプションのいずれかを指定してこの動作をカスタマイズできます。
以上がJDBC で「0000-00-00 00:00:00」DATETIME 値を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。