经常听说timestamp最多到2038年,这是为啥,本次详细了解了以下.

以MySQL8.0.23举例来对比以下区别

数据类型

日期格式

最小值

最大值

零值表示

存储大小

date

YYYY-MM-DD

1000-01-01

9999-12-31

0000-00-00

3字节

datetime

YYYY-MM-DD HH:MM:SS

1000-01-01 00:00:00

9999-12-31 23:59:59

0000-00-00 00:00:00[.000000]

8字节

time

HH:MM:SS

-838:59:59

838:59:59

00:00:00[.000000]

3字节

timestamp

YYYY-MM-DD HH:MM:SS

19700101080001

2147483647 (同int的最大值)

0000000000000000[000000]

4字节

year

YYYY

1901

2155

0000

1字节

  • 存储需求。timestamp通常占用较少的存储空间,因为它只包含一个数字,而datetime则占用较多的存储空间,因为它包含多个字段(如年、月、日、时、分、秒等)。

  • TIMESTAMP 值的存储是以 UTC(世界标准时间)格式保存的,存储时对当前时区进行转换,检索时再转换回当前时区。即查询时,根据当前时区的不同,显示的时间值是不同的。

  • 可读性。datetime可以直观地表示一个日期和时间,易于人类阅读和理解,而timestamp通常是一个数字,不太直观,需要转换成可读的日期和时间格式才能被理解。1

  • 时区处理。datetime可以包含时区信息,因此可以表示不同时区的时间,而timestamp通常是相对于某个特定时区的时间戳,通常不包含时区信息。1234567

  • 存储范围。datetime支持从1000-01-01 00:00:00到9999-12-31 23:59:59的时间范围,而timestamp支持从1970-01-01 00:00:01到2038-01-19 03:14:07的时间范围。

  • 使用场景。datetime通常适用于需要人类可读的日期和时间表示的场景,例如日历应用、事件调度等,而timestamp通常适用于需要计算时间间隔、排序或进行时间计算的场景,例如数据库记录的时间戳、日志时间戳等。

  • Timestamp在存储时会先存储为数字值,然后检查是否正确,超过会报错.Datetime是输入什么格式,存储就什么格式.

文章作者: 刘同学
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 刘同学的小站
数据库 oracle Mysql
喜欢就支持一下吧