天天看點

關于Java讀取mysql中date類型字段預設值'0000-00-00'的問題

 今天在做項目過程中,查詢一個表中資料時總碰到這個問題:

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

檢視資料庫,發現某一字段為date類型,字段值為'0000-00-00' ;檢視代碼,我用的是rs.getString("字段名");于是把代碼改成getDate("字段名");問題依舊!

    查找資料發現:在資料庫連接配接url後面加上zeroDateTimeBehavior=convertToNull,問題解決。

   原來,"0000-00-00"在mysql中是個特殊值,作為date類型變量的預設值。而Java卻不認賬,把它作為非法值看待,導緻出錯。解決辦法如上所述,資料上還有一種解決方式,時間關系我沒有試,不知結果如何:zeroDateTimeBehavior=round

   其實,mysql中datetime類型的變量會遇見相似的問題,隻不過它的預設值是"0000-00-00 00:00:00 "。解決方法也是一樣。

     本文轉自NightWolves 51CTO部落格,原文連結:<b>http://blog.51cto.com/yangfei520/482897</b>,如需轉載請自行聯系原作者