Cannot convert value '0000-00-00 00:00:00' from column XX to TIMESTAMP

在Mysql數據庫中使用DATETIME類型來存儲時間,使用JDBC中讀取這個字段的時候,應該使用 ResultSet.getTimestamp(),這樣會得到一個java.sql.Timestamp類型的數據。在這裏既不能使用 ResultSet.getDate(),也不能使用ResultSet.getTime(),因爲前者不包括time數據,後者不包括date數據。

但是在使用ResultSet.getTimestamp()時也不是完全安全的,例如,當數據庫中的TIMESTAMP類型的字段值爲 '0000-00-00 00:00:00'時,使用此方法進行讀取,會拋出異常:Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP,這是因爲JDBC不能將'0000-00-00 00:00:00'轉化爲一個爲一個java.sql.Timestamp,在Java中,想創建一個java.util.Date,使其值爲 '0000-00-00'也是不可能的,最古老的日期應該是'0001-01-01 00:00:00'。

解決方案一.String url = "jdbc:mysql://localhost:3306/test?relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull";

解決方案二.把數據庫中'0000-00-00 00:00:00'的值改掉。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章