更新 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
。
希望对您有所帮助!
首先我将 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
。
希望对您有所帮助!