为了账号安全,请及时绑定邮箱和手机立即绑定

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

如果报错 Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp 是因为 jdbc默认最小时间 为 0001-01-01 00:00:00 所以转换为 sql timestamp 失败 解决办法 在连接数据库的url中加入&zeroDateTimeBehavior=convertToNull 类似 jdbc:mysql:///seckill?useUnicode=true&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8

正在回答

3 回答

如在测试queryByIdWithSeckill()方法的时候遇到了:

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

那是因为:SuccessKilled表在创建的时候,有create_time字段(属性为timestamp),但并没有给该字段设定默认值。后插入数据时,create_time字段的值就变成了:0000-00-00 00:00:00. 

"0000-00-00 00:00:00" 在MySQL中是作为一个特殊值存在的,但 java.sql.Date 将其视为不合法的值,格式不正确。

  • 解决办法: 

    • 方法一:jdbc的url后面,追加上参数:

      ?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

    • 方法二:给timestamp字段加上默认值

      如以当前时间作为默认值,这样就不会是"0000-00-00 00:00:00"了。

1 回复 有任何疑惑可以回复我~
#1

不成不改昵称

如何使timestamp变为当前时间呢
2017-07-09 回复 有任何疑惑可以回复我~
#2

Yoooshiki 回复 不成不改昵称

在sql语句中加入 DEFAULT CURRENT_TIMESTAMP 就可以了,表示添加该字段如果没有值,就会选择当前时间作为默认值。 如: `create_time` TIMESTAMP not NULL DEFAULT CURRENT_TIMESTAMP
2017-07-09 回复 有任何疑惑可以回复我~
#3

不成不改昵称 回复 Yoooshiki

okok
2017-07-09 回复 有任何疑惑可以回复我~
#4

dbcooper 提问者

非常感谢!
2017-09-12 回复 有任何疑惑可以回复我~
查看1条回复

为什么我赋了默认值这个字段还是null

0 回复 有任何疑惑可以回复我~

请问大佬,我在后台怎么给时间字段赋值为当前时间呢,试过很多都没解决,求帮助。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号