自由的代价是孤独丶

导航

mysql数据类型date、datetime、timestamp的区别

DATETIME
同时存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS,精度到秒。

存储范围:从 1000-01-01 00:00:00 到 9999-12-31 23:59:59。

存储大小:5 字节(在新版本中,DATETIME 的内部存储会根据精度有所调整,常见仍为 5 字节)。

优点:不受时区影响,直接按字面值存储和比较,适合记录事件的“确切时间点”。

使用场景:创建时间、日志时间、订单创建时间等需要完整时间戳的场景。




DATE
仅存储日期,格式为 YYYY-MM-DD。不包含时间,如 2025-12-26。

存储范围:从 1000-01-01 到 9999-12-31。

存储大小:3 字节。

典型用途:只需要日期的信息,比如生日、股票交易日期等。




TIMESTAMP
以 UTC 存储时间点,然后在检索时根据会话/连接的时区自动转换为本地时区显示。

存储格式在显示时通常为 YYYY-MM-DD HH:MM:SS,也精确到秒。

存储范围较 DATETIME 宽松,有历史上跨越 1970-01-01 的限制,但在现代版本中已经改进。
会随着连接的时区变化而自动转换:插入时按 UTC 存储,检索时按会话时区显示。

常见配置:可以通过 time_zone 设置来调整时区;也可以在建表时用 DEFAULT CURRENT_TIMESTAMP、ON UPDATE CURRENT_TIMESTAMP 实现自动更新时间戳。如果不是该数据类型,就不能设置DEFAULT CURRENT_TIMESTAMP、ON UPDATE CURRENT_TIMESTAMP。没有设置这个选项。

使用场景:需要统一的时间基准、跨时区应用、日志时间对齐等场景,尤其是需要按时间点跨服务器对齐时。

posted on 2025-12-26 11:21   不将就鸭  阅读(0)  评论(0)    收藏  举报