码迷,mamicode.com
首页 > 其他好文 > 详细

Timestamp解析0000-00-00 00:00:00报格式错误

时间:2017-03-19 16:09:40      阅读:2187      评论:0      收藏:0      [点我收藏+]

标签:创建时间   之间   valueof   localhost   格式   rod   log   ack   类型   

mysql中存储的是Timestamp类型的0000-00-00 00:00:00,

但是在java程序中使用

Timestamp.valueOf("0000-00-00 00:00:00")

打印出来这个值会报解析格式错误:

技术分享

因为datetime类型取值范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59

timestamp类型取值范围:1970-01-01 00:00:00 到 2037-12-31 23:59:59

Timestamp识别不了全0的日期格式。

在建表的时候,通常会使用如下的方式创建某个字段:

create_time TIMESTAMP NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘创建时间‘,

也就是说如果设置的字段为null,会自动转换成0000-00-00 00:00:00。

而不是想当然的先用

Timestamp.valueOf("0000-00-00 00:00:00")

这种方式转换成全0,再insert到数据库中。

只要在连接db的配置中加入:zeroDateTimeBehavior=convertToNull

jdbc:mysql://localhost:3306/mydbname?zeroDateTimeBehavior=convertToNull

就可以在 0000-00-00 00:00:00 和 null之间进行转换。

那么如果在db中存储的是0000-00-00 00:00:00,读取出来的就是null

Timestamp解析0000-00-00 00:00:00报格式错误

标签:创建时间   之间   valueof   localhost   格式   rod   log   ack   类型   

原文地址:http://www.cnblogs.com/sonofelice/p/6580483.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!