代码之家  ›  专栏  ›  技术社区  ›  Maximus

更改一个网站的MySQL服务器时间

  •  1
  • Maximus  · 技术社区  · 15 年前

    我有一个网站不使用我们的时间。是否可以更改一个网站的php和mysql时间?如果是,我需要做什么?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Otar    15 年前

    对于PHP:

    <?php
        date_default_timezone_set('Europe/London');
    ?>
    

    请参见以下PHP支持的时区列表: http://www.php.net/manual/en/timezones.php

    对于MySQL,您需要执行如下查询:

    SET time_zone = timezone;
    

    请参见mysql文档中的详细信息: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

        2
  •  2
  •   Haim Evgi    15 年前

    每次连接都可以这样做,当您开始连接到此网站时,设置它,

    看:

    http://dev.mysql.com/doc/refman/5.6/en/time-zone-support.html

    γ

    每个连接时区。每个客户 连接有自己的时区 设置,由会话提供 时区变量。最初, 会话变量的值来自 全球时区变量,但是 客户端可以更改自己的时区 关于此声明:

    mysql> SET time_zone = timezone;
    

    但请注意:

    当前会话时区设置影响的显示和存储 区域敏感的时间值。 这包括显示的值 函数,如now()或curtime(), 以及存储和检索的值 来自时间戳列。值为 时间戳列转换自 到UTC的当前时区 存储,从UTC到当前 检索时区。

    当前时区设置不 影响函数显示的值 例如UTC时间戳()或中的值 日期、时间或日期时间列。也不 这些数据类型中的值是否已存储? 以UTC为单位;时区适用于它们 仅当从时间戳转换时 价值观。如果您想要特定区域设置 日期、时间或日期时间的算术 值,将其转换为UTC,执行 算术,然后再转换回来。

    如何设置的示例如下:

    http://www.electrictoolbox.com/mysql-set-timezone-per-connection

        3
  •  0
  •   MarkR    15 年前

    是的,您应该在php中进行所有时区转换,而不是mysql。

    对于数据库中存储日期/时间的每一列,

    a)以格林尼治标准时间储存,并进行必要的转换或

    b)始终在本地时间存储

    在这两种情况下,MySQL都不需要知道,但是您的开发人员确实需要知道,如果您有一个混合体,那么一定要在您的模式中记录这一点。

    通常需要存储本地时间日期/时间值。MySQL不记得日期时间列中的时区(它也不容易记住;在某些情况下,其他DBS也会尝试记住)。

    如果要存储已经发生的精确时间点(例如现在),则应始终将其存储在UTC中,以避免混淆确切时间。一些应用程序为此使用epoch/unix时间。

    未来的时间你可能不得不存储在当地时间,因为你还不能确切地知道它将要发生的具体时间,这可能取决于尚未当选的政治人物的决定。

    时区是很棘手的事情,因为政客们控制着时区。它们往往变化而没有什么警告(通常只有几年)