在一台服务器上,当我运行:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)

在另一台服务器上:

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)

当前回答

您可以在启动服务器时指定服务器的默认时区,请参阅http://dev.mysql.com/doc/refman/5.1/en/server-options.html,特别是——default-time-zone=timezone选项。可以查看全局时区和会话时区

SELECT @@global.time_zone, @@session.time_zone;

使用set语句设置其中一个或两个,更多细节请参见http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html。

其他回答

首先要弄清楚time_zone是什么,可以查询

SHOW VARIABLES LIKE '%time_zone%'; 

您的输出应该如下所示

**Variable_name**     **Value**
system_time_zone      CDT
time_zone             SYSTEM

然后,如果你想确认你所在的时区,比如CDT,而不是EST,你可以通过这样说来检查它认为你的机器所在的时间

SELECT NOW();

如果这不是你想要的时间,你需要改变它……你所需要做的就是SET time_zone = timezone_name。确保它是一个大洲/城市格式。

如果您在共享服务器上,因为您有托管服务,请参考这些关于更改php.ini文件或.htaccess文件的答案。

要为当前会话设置它,请执行:

SET time_zone = timezonename;

如果您正在使用MySql Workbench,您可以通过打开管理员视图并选择Advanced选项卡来设置这一点。顶部部分是“Localization”,第一个复选框应该是“default-time-zone”。选中复选框,然后输入您想要的时区,重新启动服务器,您应该可以开始了。

编辑MySQL配置文件

sudo nano /etc/mysql/my.cnf

滚动并将这些添加到底部。更改到相应的时区

[mysqld]
default-time-zone = "+00:00"

重新启动服务器

sudo service mysql restart

简单地在你的MySQL服务器上运行:

SET GLOBAL time_zone = '+8:00';

你所在的时区是+8:00。