日期类型

MySQL 可以存储的最小时间粒度是微秒

DATETIME

  • 可以保存大范围的数值,从 1000 年到 9999 年,精度为 1 微秒

  • YYYYMMDD HHMMSS 格式存储压缩成整数的日期和时间,需要 8 字节的存储空间。

  • 与时区无关

  • 默认情况下,MySQL 以可排序、无歧义的格式显示 DATETIME 值,例如,2008-01-16 22:37:08。这是 ANSI 表示日期和时间的标准方式。

TIMESTAMP

  • TIMESTAMP 类型存储自 1970 年 1 月 1 日格林尼治标准时间(GMT)午夜以来经过的秒数——与 UNIX 时间戳相同

  • TIMESTAMP 只使用 4 字节的存储空间。

  • 范围比 DATETIME 小得多:只能表示从 1970 年到 2038 年 1 月 19 日

  • MySQL 提供 FROM_UNIXTIME() 函数来将 UNIX 时间戳转换为日期,并提供了 UNIX_TIMESTAMP() 函数将日期转换为 UNIX 时间戳。

  • 时间戳显示的值依赖于时区MySQL 服务器、操作系统和客户端连接都有时区设置。

  • TIMESTAMP 还有 DATETIME 没有的特殊属性。

    • 默认情况下,当插入一行记录时没有指定第一个 TIMESTAMP 列的值,MySQL 会将该列的值设置为当前时间

    • 当更新一行记录时没有指定第一个 TIMESTAMP 列的值,MySQL 默认也会将该列的值更新为当前时间

  • TIMESTAMP 列在默认情况下为 NOT NULL

最后更新于