MySQL 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 类型?

阅读 5k
3 个回答

需要自动更新时间戳的时候,假设我有个update_at字段,只要记录更新,mysql就会自动更新该字段为当前年月日时分秒。
这个2038年估计跟早前的千年虫一样,设计上的问题。不过到现在还有20年,使用是暂时没问题的。

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展示不直观需要转换

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题