mysql的DATETIME和TIMESTAMP数据类型有什么区别

MySQL :: MySQL 8.2 Reference Manual :: 11.2.2 The DATE, DATETIME, and TIMESTAMP Types

  • 都可以表示日期和时间:DATETIMETIMESTAMP 数据类型都可以保存包含日期和时间的部分,格式为'YYYY-MM-DD hh:mm:ss [.fraction ]',其中[.fraction]代表可选的小数部分,即可以到微妙,例如2038-01-19 03:14:07.499999
  • 表示的时间范围不同:DATETIME 可以表示的时间范围是从'1000-01-01 00:00:00.000000''9999-12-31 23:59:59.499999',而TIMESTAMP可以表示的时间范围是从'1970-01-01 00:00:01.000000'到'2038-01-19 03:14:07.499999'。
  • 存储和显式方式有区别:MySQL在保存TIMESTAMP的时候,是将当前的时区转换为UTC时间存储,显示的时候又从UTC转换到当前时区,而DATETIME 没有这种转换过程。如果先保存了TIMESTAMP的值,然后改变时区,再取回TIMESTAMP的值,会跟存储的不同,这因为存储转换的时区和取回的转换时区不同。
  • 存储需求不同:

MySQL :: MySQL 8.2 Reference Manual :: 11.7 Data Type Storage Requirements

| Data Type | Storage Required Before MySQL 5.6.4 | Storage Required as of MySQL 5.6.4 |
| YEAR | 1 byte | 1 byte |
| DATE | 3 bytes | 3 bytes |
| TIME | 3 bytes | 3 bytes + fractional seconds storage |
| DATETIME | 8 bytes | 5 bytes + fractional seconds storage |

TIMESTAMP 4 bytes 4 bytes + fractional seconds storage
相关推荐
NineData8 小时前
NineData 迁移评估功能正式上线
数据库·dba
NineData13 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师15 小时前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石19 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
倔强的石头_2 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou643 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
于眠牧北3 天前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
李广坤4 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
Turnip12025 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
爱可生开源社区5 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba