【问题标题】:Best practices to insert time/time stamp in mysql在 mysql 中插入日期/时间戳的最佳实践
【发布时间】:2011-01-29 05:30:35
【问题描述】:

我在选择一种在 mysql 数据库中插入时间的有效方法时遇到了一些麻烦。

我知道 mysql 有自己的时间戳系统,但这不是我想要的。 我目前使用date("Y-m-d H:i:s", time());,它可以完成工作。

但我想知道标准是什么,或者插入时间以使其以后更容易检索的最佳做法是什么。

谢谢。

ps。我已经在网站上搜索了任何欺骗帖子,但我找不到任何内容,如果您认为这是欺骗,请随时关闭

【问题讨论】:

    标签: php mysql timestamp


    【解决方案1】:

    您以 mysql 喜欢的存储方式插入它,并在检索时按照您喜欢的方式格式化它 (DATE_FORMAT())。您不要以其他格式存储它,因为那是您想要显示它的方式,因为那样会破坏日期\时间的所有功能。

    【讨论】:

    • 请注意,您可以使用 mysql 的 NOW() 函数插入当前时间戳,然后您只需要担心在输出时对其进行格式化。
    • 假设时区一致
    【解决方案2】:

    最好的办法是在数据库中以 UTC 存储日期和时间,并在显示时将它们转换为适当的时区。 MySQL 甚至有一个特殊的函数来表示“now in UTC”:UTC_TIMESTAMP()

    当您使用 PHP 的 date 函数格式化 Unix 时间戳时,您将输出日期和时间的表示形式在 Web 服务器的时区。这很少是您想要的,并且每当网络服务器的时区发生变化时都会导致各种问题,例如在夏令时期间或如果网络服务器物理上重新定位到不同的时区。

    【讨论】:

      【解决方案3】:

      您可以将它们存储为 MySQL 时间戳,然后使用 UNIX_TIMESTAMP() 转换为 unix 时间以便在 PHP 中使用,也可以在插入时使用 FROM_UNIXTIME 将 unix 时间转换为 MySQL 时间戳。

      SELECT UNIX_TIMESTAMP(`field`) AS `unix_timestamp` FROM `table`;
      INSERT INTO `table` SET `field` = FROM_UNIXTIME(unix_timestamp);
      

      【讨论】:

        猜你喜欢
        • 2014-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-07
        • 2010-11-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多