【问题标题】:Php and mysql date and timephp和mysql日期和时间
【发布时间】:2017-05-08 04:26:56
【问题描述】:

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

【问题讨论】:

  • 谢谢大家,但我很困惑如何将此格式转换为用户本地时间

标签: php mysql datetime


【解决方案1】:
  1. 根据mysql的法律你只能有一个timestamp字段,没有 datetime 字段数量的限制..
  2. 您可以设置 onupdate current timestampcurrent timestamp.. 的时间戳字段,这些字段类型不影响 date insert method..
  3. 如果你使用date()函数你可以设置你自己的 日期格式..但不在now()

对于日期格式的语法检查这篇文章https://www.w3schools.com/php/func_date_date.asp

最后Datetime and timestamp是mysql date() 和NOW()is php

【讨论】:

  • 请尽可能链接到官方文档。 w3schools 因过时和不准确而臭名昭著。
  • 那已经过时了..但没有错对吧?..他只是初学者..对他来说,从底部起飞就足够容易了
  • 我之所以提到这个是因为是初学者的角度。 w3schools 充满了过时的垃圾,对新开发人员造成了很大的伤害。官方文档的质量明显更高,并且始终是最新的。在缺少信息的地方,cmets 实际上很有帮助。
  • 我同意哥们..但你能感觉到吗?他的问题表明,他仍然无法区分什么是 php 和什么是 mysql……这就是为什么我提出了一个简单易懂的问题……对不起……:)
  • 这就是为什么链接到this 更好。你有什么有责任,我是认真的。该网站损害了一代新程序员。
【解决方案2】:

有几点需要考虑:

  • 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 存储并根据用户的时区偏好或您的应用程序的一些合理默认值呈现为本地时间。请记住,时间格式通常是一件繁琐的事情,每个国家/地区都有不同的日期格式标准,甚至一个国家/地区也可能对长格式、短格式或数字格式有多种偏好。

【讨论】:

    猜你喜欢
    • 2013-06-16
    • 2014-01-22
    • 2015-02-12
    • 2011-04-06
    • 2011-11-08
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    相关资源
    最近更新 更多