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



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

通常使用TIMESTAMPDATETIME数据类型并不重要。

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

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

您可以使用

DateTime类型在mysql中使用now()存储时间戳并插入当前时间戳,或者通过您认为合适的任何方法获取日期/时间戳。

我更喜欢存储它,只要它总是来自纪元并代表UTC。当我们必须迎合不同的本地化和时区方面时,这会有所帮助 - 其他明智的做法是我们最终会将值存储在数据库服务器默认或 JVM 默认语言环境中。

相关内容

  • 没有找到相关文章