在MySQL中将日期存储为unix时间戳还是TIMESTAMP数据类型?

Cre*_*r13 6 mysql database-design timestamp

我需要将日期(随时间)存储在MySQL数据库中。我希望能够按照自己的喜好格式化这些格式。那么在MySQL数据库中存储日期的最佳方法是什么?DATETIME类型,TIMESTAMP类型还是数字数据类型中的unix时间戳?我将使用PHP检索日期。

Ric*_*mes 2

通常,TIMESTAMP您使用的是数据类型还是数据类型并不重要DATETIME

  • 在旧版本中,TIMESTAMP为 4 字节,DATETIME为 8 字节。
  • 想象一下DATETIME时钟的图片;将其视为TIMESTAMP世界范围内的一个瞬间。也就是说,如果您连接到相同的数据库,但来自不同的时区,aDATETIME将看起来相同,但 aTIMESTAMP将针对时区进行调整。
  • NOW()SELECTingPHP 等,两者都兼容。
  • 两者在外部都被视为字符串,例如“2015-04-25 17:09:01”。
  • 由于TIMESTAMP存储为 32 位整数(但您看不到),因此它仅限于 ~1970-2038。
  • 由于DATETIME是时钟时间,如果您切换到夏令时/从夏令时切换到夏令时,每年将会有两次缺少/额外的时间。

是的,您可以使用UNIX_TIMESTAMP()并拥有一个INT UNSIGNED,但看到“2015-...”不是更好吗?(即 4 个字节。)