报错

再使用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上添加合适的参数。

Logo

更多推荐