MySQL 中 DATETIME 和 TIMESTAMP 类型的区别是什么?
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