首先我将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
。
希望这对你有帮助!