Php和mysql的日期和时间

时间:2017-05-08 04:26:57

标签: php mysql datetime

我是php的新手,我在php date()或mysql NOW()的数据库中看到了一些程序员存储日期时间,或者将列作为时间戳。我想知道这三者之间的差异以及如何将这三种格式转换为全球当地用户。

1 个答案:

答案 0 :(得分:0)

需要考虑以下几点:

  • TIMESTAMP列仅限于1931年至2038年之间的日期,因为它们是32-bit timestamp values
  • DATETIME列可以上升到9999.虽然默认情况下它们不会像TIMESTAMP值一样自动填充,但它们受限制较少,您可以使用很多你想要的每张桌子。

插入时间时,PHP时钟和数据库时钟可能略有不同。使用NTP可以帮助缩小差距,但确实会发生漂移。 PHP date()函数需要格式化为ISO-8601 format才能插入(YYYY-MM-DD HH:MM:SS)。 MySQL NOW()函数不与UTC_TIMESTAMP()相同。

我强烈建议您在数据库中使用UTC时间,原因如下:

  • 如果您在当地时间存储,您还需要存储时区,并且这些时区可能会以疯狂和怪异的方式发生变化。
  • 您可能需要在将来容纳其他时区,这意味着您的数据中可能有多个本地时间,其中每条记录可能与其他时区具有不同的含义。
  • 您的服务器可能会在时区之间移动,这可能会转移您的所有数据。

因此,使用UTC进行存储,并根据用户的时区偏好或应用程序的某些合理默认值将其渲染为本地时间。请记住,时间格式化通常是一个繁琐的事情,每个国家/地区都有不同的日期格式标准,甚至一个国家/地区也可能有多种形式的长格式,短格式或数字格式。