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

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)

当前回答

古老的问题,还有一个建议:

如果你最近改变了操作系统的时区,例如通过:

unlink /etc/localtime
ln -s /etc/usr/share/zoneinfo/US/Eastern /etc/localtime

... MySQL(或MariaDB)直到重启db服务才会发现:

service mysqld restart

(or)

service mariadb restart

其他回答

通过登录MYSQL服务器来设置MYSQL时区。为是

SET SESSION time_zone = '+5:30';

然后运行SELECT NOW();

您可以在启动服务器时指定服务器的默认时区,请参阅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。

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

SET time_zone = timezonename;

在我的例子中,解决方案是在高级设置中将serverTimezone参数设置为适当的值(CET表示我的时区)。

当我使用IntelliJ时,我使用它的数据库模块。当添加一个新的连接到数据库,并在“常规”选项卡中添加所有相关参数后,“测试连接”按钮上出现错误。同样,解决方案是在高级选项卡中设置serverTimezone参数。

如果符合您的场景,您可以通过更改操作系统时区轻松做到这一点。

在Ubuntu系统中,使用此命令可以列出时区

sudo timedatectl list-timezones

如果需要修改操作系统的时区,需要同时执行该命令

timedatectl set-timezone America/New_York

检查操作系统时区,执行

date

然后重新启动MySQL

sudo service mysql restart

要在MySQL中检查时区,请登录并运行

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);