当前位置: 代码迷 >> Java相关 >> 至于java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
  详细解决方案

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

热度:10034   发布时间:2013-02-25 21:51:54.0
关于java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
程序执行后抛出异常:

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

是什么原因造成的此种异常?
是否是mysql   jdbc驱动的问题?
这种异常如何解决?

------解决方案--------------------------------------------------------
'0000-00-00 ' 不是一个有效的日期呀.

你首先要检查这个 '0000-00-00 ' 是哪里来的,然后改正就可以了
------解决方案--------------------------------------------------------
timestamp yyyymmddhhmmss
------解决方案--------------------------------------------------------
timestamp是mysql中的一个特殊类型,无须自己给值,你insert,update纪录,ts就是你动作的时间,如果需要纪录自己的时间,使用datetime
------解决方案--------------------------------------------------------
是啊,时间格式不正确
------解决方案--------------------------------------------------------
java.sql.Timestamp传入参数的格式不正确(0000-00-00)
------解决方案--------------------------------------------------------
换一个比较低版本的驱动就好了
------解决方案--------------------------------------------------------
给jdbc url加上 zeroDateTimeBehavior参数:

datasource.url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true


zeroDateTimeBehavior=round是为了指定MySql中的DateTime字段默认值查询时的处理方式;默认是抛出异常,

对于值为0000-00-00 00:00:00(默认值)的纪录,如下两种配置,会返回不同的结果:

zeroDateTimeBehavior=round 0001-01-01 00:00:00.0

zeroDateTimeBehavior=convertToNull null


  相关解决方案