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

一、问题分析

问题

Error querying database. Cause: java.sql.SQLException: Value'0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

分析

datetime数据库中可为空,其默认值为“0000-00-0000:00:00”,因MySQL的时间类型datetime范围是1000-01-01 00:00:00 到 9999-12-31 23:59:59,所以报错。

二、解决方案

1、在配置数据库连接的url上添加zeroDateTimeBehavior的配置。

示例:
修改前jdbc配置:

jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&characterSetResults=UTF-8

修改后jdbc配置 :

jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull

2、zeroDateTimeBehavior的所有配置:

  • 没有配置。

抛出异常如上所示

  • zeroDateTimeBehavior=round

返回值为 0001-01-01 00:00:00.0

  • zeroDateTimeBehavior=convertToNull

返回值为 null

3、注意事项

如果是xml配置,需要转义:

转义符号 原符号 含义
&lt; < 小于号
&gt; > 大于号
&amp; &
&apos; 单引号
&quot; " 双引号
posted @ 2018-11-21 11:34  这个人在加班  阅读(5131)  评论(0编辑  收藏  举报