2

有谁知道什么是正确的 MySQL 列类型以便以以下格式存储日期?例如:2012-11-11T11:09:28+00:00

更新:我感兴趣的部分是如何存储执行+xx:xx操作的用户的时区,问题是是否存在包含时区的 MySQL 日期格式。阅读 MySQL 文档并没有找到任何相关信息,这就是我在这里写的原因。

4

1 回答 1

4

MySQL 中没有包含时区的 DATE/TIME 列类型。这也不是真的必要,因为时间戳是一个时间戳,它是一个绝对时间点。仅当您想将时间戳格式化为本地时间时,时区才相关,但 MySQL 将日期存储为绝对时间点,而不考虑时区。

如果要存储包含时区信息的值,则必须将其存储为字符串。

但是,无论如何,更好的策略是:

  • 将应用程序中的所有时间标准化为一个时区,UTC 是一个不错的选择
  • 将标准化时间存储在数据库中
  • 为他/她的首选时区存储用户偏好
  • 从数据库中获取时间以显示时,将它们从 UTC 转换为用户所需的时区

这是处理此问题的典型方法。如果这对您的应用有意义,您还可以将时区存储在时间戳列旁边的另一列中:

`time_utc` (DATETIME) | `timezone` (VARCHAR)
----------------------+---------------------
2012-11-11 11:11:11   | Europe/Berlin

这样,您可以在数据库中拥有统一的时间戳来进行计算/查询,同时能够在需要时以本地时间格式化它们。

于 2012-11-11T13:40:08.140 回答