MySQL中datetime字段插入0值数据错误解决

2022-10-15
预计阅读时间:2分钟

当使用Java在操作MySQL时,如果你的MySQL表中存在datetime类型的字段,相信你有可能会遇到这种情况,0值的datetime字段,显示在MySql里显示为"0000-00-00 00:00:00",恰恰是这个值,当赋值给实体类对应的属性Timestamp类型时,会提示错误"Cannot convert value ‘0000-00-00 00:00:00’ from column N to TIMESTAMP"。一般这种情况我们更希望数据库驱动能帮我们这个特殊的家伙自动地转为null。

办法是有的,在我们配置数据库连接时的配置属性中,有一项“url”,通常情况下,写为jdbc:mysql://192.168.137.9:3306/db_new_teaching,为了解决上述的问题,在这个字符串后面追加一个配置“zeroDateTimeBehavior”,最终写为jdbc:mysql://192.168.137.9:3306/db_new_teaching?zeroDateTimeBehavior=convertToNull即可。

zeroDateTimeBehavior有三个值,分别代表不同的处理策略,如下所示:

exception:抛出异常,这个是默认值。 convertToNull:将日期转换成NULL值。 round:替换成最近的日期即0001-01-01。 当然,还有更直接可观的做法,当我们使用Timestamp属性存入数据库之前,最好可以检查并避免0值的插入,自然而然也就不会出现上述的转换异常问题了。