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 |
网友评论