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

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)

当前回答

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

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

其他回答

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

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

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

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

service mysqld restart

(or)

service mariadb restart

在Windows (IIS)上,为了能够SET GLOBAL time_zone = 'Europe/Helsinki'(或其他什么),MySQL time_zone描述表需要首先填充。

我是从这个链接https://dev.mysql.com/downloads/timezones.html下载的

运行下载的SQL查询后,我能够设置全局time_zone和解决问题,我有SELECT NOW();返回的是格林尼治标准时间而不是英国夏令时。

如果有人正在使用GoDaddy共享主机,你可以尝试以下解决方案,为我工作。

当启动DB连接时,在我的PDO对象中设置time_zone命令,例如:

$pdo = new PDO($dsn, $user, $pass, $opt);
$pdo->exec("SET time_zone='+05:30';");

其中“+05:30”是印度时区。您可以根据需要更改。

在那之后;所有与日期和时间相关的MySQL进程都设置了所需的时区。

来源:https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861

编辑MySQL配置文件

sudo nano /etc/mysql/my.cnf

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

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

重新启动服务器

sudo service mysql restart

如果使用指定时区会导致错误:

mysql> SET GLOBAL time_zone = "Asia/Bangkok";    
ERROR 1298 (HY000): Unknown or incorrect time zone: 'Asia/Bangkok'

你可以试试:

mysql_tzinfo_to_sql tz_file tz_name | mysql -u root -p mysql

然后:

SET GLOBAL time_zone = "Asia/Bangkok";
SET time_zone = "+07:00";
SET @@session.time_zone = "+07:00";

检查一下现在几点了:

SELECT NOW();

裁判: https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html#time-zone-installation