Mysql timestamp范围问题

2019-08-09  本文已影响0人  酥苏落叶

timestamp 是Mysql中的一个时间戳类型,
在创建表时,我为这个类型的字段创建默认值为'1970-01-01 00:00:01'发现不能成功创建,并提示Invalid default value for '字段名'。

上网查资料,大部分资料都表明这个类型的范围在1970-01-01 00:00:01到2038-01-19 03:14:07之间。应该没有问题.

继续查找,最后发现问题出在时区上,在MySQL文档中支持的时间范围后面都添加了UTC,说明这个时间是和时区相关的,MySQL在存储的时候会将timestamp类型的字段从当前时区转成UTC时区。从当前时区转成UTC时区需要减去8小时,所以最后'1970-01-01 00:00:01'这个时间存储到MySQL不在timestamp类型的范围内了。

因此我们的最小默认值应该是'1970-01-01 08:00:01'

日期类型 存储空间 格式 日期范围
datetime 8bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 - 9999-12-31 23:59:59
timestamp 4bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 - 2037-12-31 23:59:59
date 3bytes YYYY-MM-DD 1000-01-01 - 9999-12-31
上一篇 下一篇

猜你喜欢

热点阅读