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

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)

当前回答

首先要弄清楚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文件的答案。

其他回答

首先要弄清楚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文件的答案。

这是一个10年前的问题,但不管怎样,这里有一个对我有用的方法。我使用MySQL 8.0与Hibernate 5和SpringBoot 4。

我试过上面的答案,但对我不起作用,对我有效的是:

db.url=jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=Europe/Warsaw

如果这对你有帮助,别忘了给它投票

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

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

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

SET SESSION time_zone = '+5:30';

然后运行SELECT NOW();

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

SET time_zone = timezonename;