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

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)

当前回答

如果你使用PDO:

$offset="+10:00";
$db->exec("SET time_zone='".$offset."';");

如果你正在使用MySQLi:

$db->MySQLi->query("SET time_zone='".$offset."';");

关于格式化偏移量的更多信息: https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/

其他回答

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

对于仍然有这个问题的人:

value="jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC"

为我工作。只需在末尾附加?serverTimezone=UTC。

在MySQL Workbench 8.0的服务器选项卡下,如果你选择状态和系统变量,你可以在这里设置它。

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

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

如果有人正在使用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