有没有相当于PHP`date_default_timezone_set()`在MySQL中有效?

时间:2009-05-22 04:10:17

标签: php mysql

这在PHP中非常有用

date_default_timezone_set('my/timezone');

$actualDate = date('Y-m-d');

现在做查询时,我喜欢做

INSERT INTO articles (title, insert_date) VALUES ('My Title', now())

问题在于,MySQL中的now()与在PHP中计算的内容不同(因此与设置的时区相对)。

有没有办法,例如SQL查询,设置MySQL的默认时区?

由于

3 个答案:

答案 0 :(得分:3)

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

  

如果您具有SUPER权限,则可以使用以下语句在运行时设置全局服务器时区值:

     

mysql> SET GLOBAL time_zone = timezone;

     

每个连接时区。连接的每个客户端都有自己的时区设置,由会话time_zone变量给出。最初,会话变量从全局time_zone变量中获取其值,但客户端可以使用以下语句更改自己的时区:

     

mysql> SET time_zone = timezone;

答案 1 :(得分:1)

您可以尝试的是以UTC格式存储所有日期/时间。所以,你会使用

date_default_timezone_set('UTC');
$actualDate = date('Y-m-d');

INSERT INTO articles (title, insert_date) VALUES ('My Title', UTC_TIMESTAMP())

然后,您可以在显示之前将UTC日期/时间转换为用户的时区。

答案 2 :(得分:0)

我通常将MySQL服务器设置为格林威治标准时间,然后在PHP中使用gmdate而不是date。将所有内容保留在GM时间中,这样如果您移动到另一台服务器,或者在不同的时区内有2个,那么事情就不会搞砸了。