首页 > 图灵资讯 > java面试题>正文
金三银四精选java面试题-DATETIME 和 TIMESTAMP 的异同
2023-12-04 15:14:31
DATETIME 和 TIMESTAMP 的异同
MySQL 中常用的两种时间储存类型分别是datetime和 timestamp。如何在它们之间选择是建表时必要的考虑。下面就谈谈他们的区别和怎么选择:
相同点:
- 两个数据类型存储时间的表现格式一致。均为 YYYY-MM-DD HH:MM:SS
- 两个数据类型都包含「日期」和「时间」部分。
不同点:
- 日期范围:
- DATETIME 的日期范围是 1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999;TIMESTAMP 的时间范围是1970-01-01 00:00:01.000000 UTC 到 ``2038-01-09 03:14:07.999999 UTC,会遇到千禧年问题
- 存储空间:DATETIME 的存储空间为 8 字节;TIMESTAMP 的存储空间为 4 字节
- 时区相关:DATETIME 存储时间与时区无关;TIMESTAMP 存储时间与时区有关,显示的值也依赖于时区
- 默认值:DATETIME 的默认值为 null;TIMESTAMP 的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP)
选择DATETIME还是TIMESTAMP时,可以考虑以下因素:
- 功能需求:如果你需要存储不受时区影响的日期和时间信息,使用DATETIME类型更为合适。
如果需要存储与时区相关的信息,并希望自动进行时区转换和更新,使用TIMESTAMP类型更为适合。
- 存储空间:TIMESTAMP类型通常占用较少的存储空间,因为它只存储从'1970-01-01 00:00:01'以来的秒数。而DATETIME类型存储了一个固定长度的日期和时间字符串。