MySQL 中 DATETIME 和 TIMESTAMP 有什么区别?

分享一道经典面试题~

此答案节选自鸭鸭最近弄的面试鸭小程序,更多大厂常问面试题,可以点击下面的小程序进行阅读哈!

盘点不同点

虽然它们都是时间字段类型,但是在存储格式、范围、时区处理和默认值等方面有所不同!

存储格式不同

DATETIME 存储的是具体的日期和时间,格式为 YYYY-MM-DD HH:MM:SS。它不依赖于时区信息,存储的是原始时间数据

TIMESTAMP 存储的是自 1970-01-01 00:00:01 UTC 以来的秒数,格式为 YYYY-MM-DD HH:MM:SS。它依赖于时区信息,存储的是 UTC 时间

时间范围不同

DATETIME 可以表示从 1000-01-01 00:00:00 到 9999-12-31 23:59:59 的时间范围。

TIMESTAMP 可以表示从 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC 的时间范围(32 位整数表示的限制)。

到 2038 年后就存不下咯。

时区处理不同

DATETIME 不考虑时区,它存储的是输入的日期和时间值,不进行任何时区转换。

TIMESTAMP 考虑时区,它存储的是 UTC 时间,插入和检索时会根据当前时区进行转换。这意味着在不同的时区中,TIMESTAMP 类型的数据会自动调整以显示本地时间。

默认值和自动更新不同

在 MySQL 5.6 及更早版本中,DATETIME 列不能有自动更新的默认值。

在 MySQL 5.6 及以后版本中,可以使用 DEFAULT 和 ON UPDATE 子句来指定自动初始化和更新行为,但不像 TIMESTAMP 那么直观。

在 MySQL 5.6 及更高版本中,TIMESTAMP 列可以有默认的当前时间戳 CURRENT_TIMESTAMP,并且可以使用 ON UPDATE CURRENT_TIMESTAMP 使其在行更新时自动更新为当前时间戳。

这使得 TIMESTAMP 非常适合记录行的创建和修改时间。

最后

最后再推荐下鸭鸭目前努力在做面试小程序神器,已经有近 1500 道面试题目啦。

欢迎大家体验!如果大家有不会的面试题,也可以在小程序内反馈!鸭鸭会第一时间为大家解答!

我是鸭鸭,我们下期见~

相关推荐

  • 用开源项目去参赛?别搞!
  • 一句慢 SQL 执行 600 秒?!你咋不上天呢
  • 一次事故暴露出的三个架构问题
  • 徐峥演出了人间真实:面对裁员,hr说人家能熬啊
  • 基于趋势和季节性的时间序列预测实战
  • 没有千亿级也没有百亿级,ToB 大模型如何挖掘不足 1% 的企业数据的价值?
  • vivo蓝河操作系统首届技术沙龙即将举办,邀您共探Rust与AI新时代!| Q推荐
  • K8s 技术人不得不说的考证二三事 | 极客时间
  • 清华大学汪玉:大模型能效提升,有几条必经之路?
  • 软件工程的兴衰轮回:2 年巨变,裁员风暴下小团队逆袭,老技术反迎第二春?
  • 招聘|Anytime AI-机器学习工程师
  • 资料下载:《大语言模型实战宝典》
  • 弱监督建模技术在蚂蚁风控场景中的探索与应用
  • 2024年云中AI工程的三大关键趋势
  • 关于攻防演练,90%企业不知道的3个真相
  • 烧钱抢老司机饭碗?“萝卜快跑”事件辟谣:武汉仅投放400多辆无人车;“萝卜”相关负责人揭秘AI新职业:“云代驾”!
  • 北京内推 | ​度小满金融AI LAB招聘数字人/文生视频方向研究型实习生
  • 当Mamba遇上视觉压缩:首个具有选择性状态空间的视觉压缩网络
  • 生成式模型不只会「模仿」!哈佛、UCSB等最新成果:性能可超越训练集专家水平
  • 斯坦福炒虾机器人原班人马新作!最强大脑Gemini加持,机器人炫技导航玩出新花样