MySQL 时间戳存储方式
问题: MySQL 中时间戳是如何存储的?
答案: MySQL 使用整数类型存储时间戳,该整数表示自特定参考点(通常为 1970 年 1 月 1 日午夜 UTC)以来经过的秒数。
详细解释:
MySQL 提供了两种主要的时间戳类型:
TIMESTAMP: 它是一个自动更新的日期时间类型,存储为整数,表示自 Unix 纪元(1970 年 1 月 1 日午夜 UTC)以来经过的秒数。 DATETIME: 它是一个非自动更新的日期时间类型,存储为一个整数,表示自 Unix 纪元以来经过的秒数,以及一个分数部分,表示自该秒以来的微秒数。默认情况下,MySQL 将 TIMESTAMP 值存储为 8 字节的有符号整数,它可以表示从公元前 4713 年到公元 292278993 年之间的时间。
可以通过指定
TIMESTAMP [fractional_seconds_precision]语法来指定时间戳的分数秒精度。精度范围从 0 到 6,0 表示没有分数秒,6 表示存储微秒精度。例如,
TIMESTAMP(6)将存储微秒精度的时间戳。
注意事项:
MySQL 8.0 引入了新的DATE和
TIME数据类型,它们专门用于存储日期和时间,而不是使用整数存储时间戳。 使用 TIMESTAMP 类型时,需要注意时区转换,因为它存储的是自 Unix 纪元以来经过的秒数,而不是特定时区的日期时间。
