MySQL中使用 TIMESTAMP 而不是 DATETIME 的原因:
DATETIME的特点
保存从1001 年到 9999年,精度为秒,使用8个字节把日期和时间装到格式为“YYYYMMDDHHMMSS” 的整数,整数格式在处理时不方便,此外没有区分时区。
TIMESTAMP的特点
保存1970(同 UNIX 时间戳)年到2038年的时间,精度也是秒,使用4个字节存储。MySQL提供 FROM_UNIXTIME() 将Unix时间戳转换为日期,还提供 UNIX_TIMESTAMP() 将日期转换为Unix 时间戳。时间显示与时区相关,不同的时区时间显示不同。
总结
区别 | DATETIME | TIMESTAMP |
---|---|---|
存储时间范围 | 1001 ~ 9999 | 1970 ~ 2038 |
空间消耗 | 8字节 | 4字节 |
时区相关 | 不相关 | 相关 |
默认值 | 没有 | 当前时间戳 |
精度 | 秒 | 秒 |
MySQL中使用 TIMESTAMP 而不是 DATETIME 的原因:TIMESTAMP空间消耗少,操作方便(不像DAETIME要操作整数值)。
题外话
如果要存储精度更细的时间,可以使用 BIGINT存储 微妙级别的时间戳,或者使用 DOUBLE 存储秒之后的小数部分。
参考资料: 高性能MySQL 第三版