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; " 双引号


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM