Java

2013-01-06, java mysql

日付値'0000-00-00'に対するResultSetの例外を回避する

参照先のURLがドンピシャ(死語?)の解答なのですが、一応繰り返し。MySQLのDATE型フィールドに'0000-00-00'という値が入っていると、JDBCドライバがこれを正しく扱うことができません。

Value '0000-00-00' can not be represented as java.sql.Date

影響範囲が分かっていれば応急処置として、当該値を全部NULLに更新してしまう、という方法が考えられます。

mysql> UPDATE t SET d = NULL WHERE d = '0000-00-00';

ドライバの側でも似たような対応が可能で、接続URLに以下のパラメタを足してやると例外の発生を抑制できるようです(その名の通り、0000-00-00に出会ったらNULLに変換してくれます)。

?zeroDateTimeBehavior=convertToNull

参考URL

この記事は役に立ちましたか?