2012-11-11 112 views
2

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

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

+5

在DATE/DATETIME列中存储日期,* format *它们仅用于显示。 – deceze

+0

这在mysql网站上有介绍。看看这里http://dev.mysql.com/doc/refman/5.5/en/datetime.html –

回答

4

MySQL中没有包含时区的日期/时间列类型。这也不是必须的,因为时间戳是一个时间戳,它是一个绝对的时间点。只有当你想将时间戳格式化为本地时间时,时区才是相关的,但MySQL不管时区如何都将日期存储为绝对时间点。

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

但是,更好的策略是这样的,反正:

  • 正常化任何时候都在应用程序中一个时区,UTC是一个不错的选择
  • 商店数据库中的
  • 存储用户归一化时间偏好他/她的首选时区
  • 从数据库中提取时间以显示时,将它们从UTC转换为用户所需的时区

这是解决这个问题的典型方法。您还可以在另一列中的时区存储时间戳列旁边,如果你的应用程序是有道理的:

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

你已经在你的数据库上做计算/查询统一的时间戳通过这种方式,同时能够在需要时在当地时间格式化它们。