MySQL中时间戳以整数形式存储,表示自1970年1月1日UTC午夜起经过的秒数。类型包括TIMESTAMP(自动更新)和DATETIME(非自动更新),精度范围为0-6(0表示无分数秒,6表示存储微秒精度)。MySQL 8.0引入了专门的DATE和TIME数据类型。

MySQL 时间戳存储方式
问题: MySQL 中时间戳是如何存储的?
答案: MySQL 使用整数类型存储时间戳,该整数表示自特定参考点(通常为 1970 年 1 月 1 日午夜 UTC)以来经过的秒数。
详细解释:
MySQL 提供了两种主要的时间戳类型:
本书全面介绍PHP脚本语言和MySOL数据库这两种目前最流行的开源软件,主要包括PHP和MySQL基本概念、PHP扩展与应用库、日期和时间功能、PHP数据对象扩展、PHP的mysqli扩展、MySQL 5的存储例程、解发器和视图等。本书帮助读者学习PHP编程语言和MySQL数据库服务器的最佳实践,了解如何创建数据库驱动的动态Web应用程序。
- 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 纪元以来经过的秒数,而不是特定时区的日期时间。









