我们项目的持久层框架采用的的是Mybatis,今天有个项目一直报 java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp 的异常 ,从异常报错来看,是 0000-00-00 00:00:00无法转换为 java.sql.Timestamp的问题。查看相应的表,对应的日期类型默认值确实是0000-00-00 00:00:00,且mysql的时间类型定义时如果不指明为NULL,则默认为not null,产生一个默认值即'0000-00-00',于是查阅解决办法,有如如下解决方法:
方法1:
数据库连接url增加参数zeroDateTimeBehavior=convertToNull或者round,将默认的'0000-00-00'转换为其他值;
方法2:
定义时间类型时给出默认值,例如 date not null default '1970-00-00',(mysql的时间类型默认值必须从’1970-00-00‘开始)
方法3:
定义时间类型时默认为null