今天在做项目过程中,查询一个表中数据时总碰到这个问题:
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博客,原文链接:
http://blog.51cto.com/yangfei520/482897
,如需转载请自行联系原作者