Java代码读取MySQL数据,遇到‘0000-00-00’报错Value ‘0000-00-00‘ can not be represented as java.sql.Date
报错再使用Java代码读取MySQL数据的时候,读取date格式的数据,然后使用DateTimeFormatter格式化的时候突然在控制台发现了报错,Value ‘0000-00-00’ can not be represented as java.sql.Date,找到对应的数据,发现该条数据在MySQL中的值为‘0000-00-00’原因‘0000-00-00’在mysql中是作为一个特殊值存
报错
再使用Java代码读取MySQL数据的时候,读取date格式的数据,然后使用DateTimeFormatter格式化的时候突然在控制台发现了报错,Value ‘0000-00-00’ can not be represented as java.sql.Date,找到对应的数据,发现该条数据在MySQL中的值为‘0000-00-00’
原因
‘0000-00-00’在mysql中是作为一个特殊值存在的,但是在Java中, java.sql.Date 会被视为 不合法的值,被JVM认为格式不正确,会报异常。
解决方案
在jdbc的url加上 zeroDateTimeBehavior参数:
jdbc:mysql://127.0.0.1:3306/default?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
该属性有下列三个属性值:
exception
默认值,即抛出SQL state [S1009]. Cannot convert value…的异常;
convertToNull
将日期转换成NULL值;
round
替换成最近的日期即0001-01-01;
可以根据需要在jdbc的url上添加合适的参数。
更多推荐
所有评论(0)