解決異常報錯java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp


今天在執行某個分頁查詢時,查詢MySQL的結果集時遇到如下報錯:

java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

查詢資料后記錄下出錯原因:

查詢的結果集中某數據行的日期值為0000-00-00 00:00:00。

因MySQL的時間類型datetime范圍是1000-01-01 00:00:00 到 9999-12-31 23:59:59,所以報錯。

如何解決

  可以考慮通過修改連接串,附加zeroDateTimeBehavior=convertToNull屬性的方式予以規避,例如:

  •   jdbc:mysql://localhost:3306/mydbname?zeroDateTimeBehavior=convertToNull
在JDBC連接串中有一項屬性:zeroDateTimeBehavior,可以用來配置出現這種情況時的處理策略,該屬性有下列三個屬性值:
  •  exception:默認值,即拋出SQL state [S1009]. Cannot convert value....的異常;
  •  convertToNull:將日期轉換成NULL值;
  •  round:替換成最近的日期即0001-01-01;

  從另一個層面講,這類異常的觸發也與timestamp賦值的操作有關,如果能夠在設計階段和記錄寫入階段做好邏輯判斷,避免寫入 '0000-00-00 00:00:00'這類值,那么也可以避免出現 Cannot convert value '0000-00-00 00:00:00' from column N to TIMESTAMP的錯誤。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM