The TIMESTAMP data type is used for values that contain both date and
time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to
'2038-01-19 03:14:07' UTC.
竟然 timestamp 类型表示的时间最多到 2038 年,那用它的意义何在?什么情况下用 timestamp 类型?
The TIMESTAMP data type is used for values that contain both date and
time parts. TIMESTAMP has a range of '1970-01-01 00:00:01' UTC to
'2038-01-19 03:14:07' UTC.
竟然 timestamp 类型表示的时间最多到 2038 年,那用它的意义何在?什么情况下用 timestamp 类型?
1.timestamp 只能表示'1970-01-01 00:00:01' UTC to'2038-01-19 03:14:07' UTC.这一段的时间,如果你的业务逻辑中的时间超过了这个范围那么就不能表示了。
2.timestamp存的是时间戳,并且根据mysql的时区设置自动转化为‘2017-09-13 15:03:49’这种格式。假如现在你的mysql在北京下存储的时间为‘2017-10-11 10:00:00’ 那么当你把时区设为东京时他就自动变为‘2017-10-11 11:00:00’ (东京比北京快一个小时)。因此timestamp类型会根据你当时写入的时间戳以及当前mysql的时区来显示时间的。因此它的使用场景是你的应用是global的。
timestamp底层存储是使用时间戳,基于标准时区的int值,所以占位小,性能高,数据展示直观,唯一的问题就是int上限转换为时间只能到2038年,所以看你的业务,如果这点没影响就可以用啊,其他表示时间的datetime占位大,bigint展示不直观需要转换
5 回答3.3k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
2 回答2.1k 阅读
3 回答2k 阅读
1 回答3.6k 阅读
需要自动更新时间戳的时候,假设我有个update_at字段,只要记录更新,mysql就会自动更新该字段为当前年月日时分秒。
这个2038年估计跟早前的千年虫一样,设计上的问题。不过到现在还有20年,使用是暂时没问题的。