MySQL 中 DATETIME 和 TIMESTAMP 类型的区别是什么?

Sherwin.Wei Lv7

MySQL 中 DATETIME 和 TIMESTAMP 类型的区别是什么?

回答重点

存储方式

  • DATETIME:以字符串形式存储,范围为 '1000-01-01 00:00:00''9999-12-31 23:59:59',占用 8 字节。
  • TIMESTAMP:以 Unix 时间戳形式存储,范围为 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC,占用 4 字节。

时区处理

  • DATETIME:不受时区影响,存储的时间是具体的日期和时间,不会进行自动转换。
  • TIMESTAMP:受时区影响,存储时会转换为 UTC,取出时会根据连接的时区进行转换,适合处理跨时区的数据。

扩展知识

默认值和自动更新

  • DATETIME:在 MySQL 5.6 及更早版本中,DATETIME 列不能有自动更新的默认值。在 MySQL 5.6 及以后版本中,可以使用 DEFAULT 和 ON UPDATE 子句来指定自动初始化和更新行为,但不像 TIMESTAMP 那么直观。
  • TIMESTAMP:在 MySQL 5.6 及更高版本中,TIMESTAMP 列可以有默认的当前时间戳 CURRENT_TIMESTAMP,并且可以使用 ON UPDATE CURRENT_TIMESTAMP 使其在行更新时自动更新为当前时间戳。这使得 TIMESTAMP 非常适合记录行的创建和修改时间。
Comments
On this page
MySQL 中 DATETIME 和 TIMESTAMP 类型的区别是什么?