数据库字段类型为timestamp时默认值的问题

后来我发现,无论上面的默认值怎么改,下面的都变成’1970-01-01 08:00:00’

找到原因了。。。
是因为之前这个字段是[datetime]类型,默认值为[1970-01-01 08:00:00].
而[timestamp]的默认值跟时区有关。东8区的不能早于[1970-01-01 16:00:00].

因为修改类型之前已经存在数据,而数据里面的这个字段里面就是默认值[1970-01-01 08:00:00].

就类似于varchar(55)改成int(10),修改之前必须把已存在的数据里这个字段的值都修改为数字格式。

最佳答案

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

生产环境中部署着各种版本的MySQL,包括MySQL 5.5/5.6/5.7三个大版本和N个小版本,由于MySQL在向上兼容性较差,导致相同SQL在不同版本上表现各异,下面从几个方面来详细介绍时间戳数据类型。

在MySQL上述三个大版本中,默认时间戳(Timestamp)类型的取值范围为’1970-01-01 00:00:01’ UTC 至’2038-01-19 03:14:07’ UTC

2年前 评论
讨论数量: 6
你看我吊吗啊

你没发现你所写的语句 运行失败吗。。。我试了一下也不能指定默认时间

www.cnblogs.com/caicaizi/p/7813518...

2年前 评论

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

生产环境中部署着各种版本的MySQL,包括MySQL 5.5/5.6/5.7三个大版本和N个小版本,由于MySQL在向上兼容性较差,导致相同SQL在不同版本上表现各异,下面从几个方面来详细介绍时间戳数据类型。

在MySQL上述三个大版本中,默认时间戳(Timestamp)类型的取值范围为’1970-01-01 00:00:01’ UTC 至’2038-01-19 03:14:07’ UTC

2年前 评论
你看我吊吗啊

@忆往昔弹指间 你百度的很对 但是没给他解决问题。

2年前 评论

我一般都不用[timestamp]这个类型,要不是为了修改我的框架,我都不怎么研究它。

2年前 评论

我一般选 timestamp ,直观,默认值 null

2年前 评论
  `create_user` int DEFAULT '0' COMMENT '添加人',
  `create_time` int DEFAULT '0' COMMENT '添加时间',
  `update_user` int DEFAULT '0' COMMENT '更新人',
  `update_time` int DEFAULT '0' COMMENT '更新时间',
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!