MySQL 数据类型优化 (三:日期和时间类型)

  • A+
所属分类:MySQL

MySQL 可以使用许多类型来保存日期和时间值,例如 YEAR 和 DATE。 MYSQL 能存储的最小时间粒度为秒。但是 MySQL 也可以使用微秒级的粒度进行临时运算。

MySQL 提供两种相似的时间类型:DATETIME 和 TIMESTAMP。

DATETIME

这个类型能保存大范围的值,从1001年到9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS 的整数中,与时区无关,使用8个字符的存储空间。默认情况下,MySQL以一种可排序的、无歧义的格式显示DATETIME 值。

TIMESTAMP

TIMESTAMP 类型保存了从 1970年1月1日午夜以来的秒数,它和UNIX 的时间戳相同。TIMESTAMP 只使用4个字节的存储空间,因此它的范围要比DATETIME 的范围小得多:只能表示从1970到2038年。MySQL 提供了 FROM_UNIXTIME() 函数把Unix 时间戳转换为日期。

除了特殊行为之外,通常也应该尽量使用 TIMESTAMP,因为它比 DATETIME 空间效率更高。

如果需要存储比秒更小粒度的时间和日期值怎么办?MySQL目前没有提供合适的数据类型,但是可以使用自己的存储格式:可以使用 BIGINT 类型存储微秒级别的时间戳,或者使用 DOUBLE 存储秒之后的小数部分。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: