更新 mysql 时区并更改所有 TIMESTAMPS 列

Update mysql timezone and change all TIMESTAMPS columns

首先我将 MYSQL 设置为 America/Montreal

SET time_zone = 'America/Montreal

为了确保一切正常,我在 PHP:

中使用
date_default_timezone_set('America/Montreal');

我不明白的是数据库中保存的值不正确,例如11:00:00将保存10:00:00,但在获取信息时显示11:00:00 .所以在一天结束时,系统按我们想要的方式运行,但数据库中的数据不准确。有人可以向我解释为什么吗? 例如我有一列 start_time 设置为 TIMESTAMP

"INSERT into table set start_time = '".date("Y-m-d H:i:s")."'

假设当前时间是 11:00:00,但保存的时间将是 10:00:00 并且在获取时将 return 11:00:00.

然后回到我的问题,由于数据不准确,我想将服务器时间更改为正确的时间并让 MySQL 使用新时间,如果我这样做,日期/时间数据在数据库中自动更新?如果不是,我该如何更新新时区的所有日期和时间?

谢谢。

那是因为您的 MySQL 服务器有另一个时区(您的 PHP 服务器与 MySQL 服务器不同)!当您获取时间戳字段时,php 会根据您的默认时区自动对其进行本地化。要在您的数据库上也有正确的时间戳,您需要在连接到 MySQL:

时设置它
$mysqli->query("set time_zone = '+00:00'");

此命令将您的 MySQL 连接时区设置为 GMT,但对于蒙特利尔,它应该是 -05:00

希望对您有所帮助!