Yefei.Blog

个人日记 WIKI

用户工具

站点工具


mysql:timestamp

MySQL 时间戳类型

默认时间戳类型的取值范围为'1970-01-01 00:00:01' UTC 至'2038-01-19 03:14:07' UTC,默认精确到秒

存储过程:本地时间 → 转换为utc → 转换为秒(UNIX_TIMESTAMP) → 存储INT
读取过程:存储INT → 从秒转换为时间(FROM_UNIXTIME) → utc转换 → 本地时间

精度改变会改变内部存储空间大小

版本 长度timestamp(N) 精度 默认创建语句timestamp timestamp default 0
5.5 0 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
5.6 0-6 3:毫秒,6:微秒 timestamp NULL DEFAULT NULL timestamp NULL DEFAULT '0000-00-00 00:00:00'
5.7 0-6 3:毫秒,6:微秒 timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'

当时间戳列的默认值为'0000-00-00 00:00:00'时,使用“不在时间戳取值范围内”的该默认值并不会产生警告

注意事项:

当MySQL参数time_zone=system时,查询timestamp字段会调用系统时区做时区转换,而由于系统时区存在全局锁问题。 建议将time_zone参数设置为system外的值,如中国地区服务器设置为'+8:00'

mysql/timestamp.txt · 最后更改: 2020/04/30 10:10 由 yefei