数据库字段类型为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