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



首先我将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,当获取时将返回11:00:00。

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

谢谢。

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

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

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

希望这对你有帮助!

相关内容

  • 没有找到相关文章