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

时间:2010-08-19 12:58:49

标签: php mysql

我有一个不使用美国时间的网站。是否可以更改一个网站的PHP和MySQL时间?如果是这样,我需要做什么?

3 个答案:

答案 0 :(得分:2)

你可以按连接进行,当你开始连接这个网站时,

看看:

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

  

每个连接时区。每个客户   连接有自己的时区   设置,由会话给出   time_zone变量。最初,   session变量取自其值   全局time_zone变量,但是   客户可以更改自己的时区   声明:

mysql> SET time_zone = timezone;

但请注意:

  

当前会话时区设置会影响显示和存储   区域敏感的时间值。   这包括显示的值   NOW()或CURTIME()等函数,   和存储和检索的值   来自TIMESTAMP专栏。的价值观   TIMESTAMP列是从中转换而来的   UTC的当前时区   存储,从UTC到当前   检索时区。

     

当前时区设置没有   影响函数显示的值   例如UTC_TIMESTAMP()或其中的值   DATE,TIME或DATETIME列。也不   是存储的那些数据类型中的值   在UTC;时区适用于他们   仅在从TIMESTAMP转换时   值。如果您想要特定于语言环境   DATE,TIME或DATETIME的算术运算   值,将它们转换为UTC,执行   算术,然后转换回来。

如何设置的示例位于:

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

答案 1 :(得分:1)

对于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 :(得分:0)

是的,您应该在PHP内部进行所有时区转换,而不是mysql。

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

a)将其存储在GMT中并进行必要的转换或

b)始终以当地时间存储

在这两种情况下,MySQL都不需要知道,但是你的开发人员这样做是确保你在模式中记录这个,如果你有混合物。

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

如果您要存储已经发生的精确时间点(例如现在),那么您应该始终将其存储在UTC中,以避免混淆其确切的发生时间。有些应用程序会使用epoch / unix时间来实现此目的。

您可能需要在当地时间存储的未来时间,因为您无法确切知道它将发生什么时间,这可能取决于可能尚未当选的政客的决定。

时区是棘手的事情,因为政客控制它们。它们倾向于在几乎没有警告的情况下改变(通常只有几年)