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

时间:2015-09-08 16:30:02

标签: php mysql apache timezone server

首先,我将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使用新的时间,如果我这样做,数据库中的日期/时间数据会自动更新?如果不是,我怎么能更新新时区的所有日期和时间?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

希望这有帮助!