我搜索了很多链接,但到目前为止,我找不到解决问题的方法。
我在Go Daddy上有一个虚拟主机,它返回PHP和MySQL的不同时间:
我已经将我的PHP时区设置为:
date_default_timezone_set('America/Sao_Paulo');
有人知道调整MySQL时间的方法吗?
由于
答案 0 :(得分:1)
我在这个链接找到了我的解决方案:
https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/
实际上,我同步了我的PHP和MySQL时区。这是代码:
define('TIMEZONE', 'America/Sao_Paulo');
date_default_timezone_set(TIMEZONE);
$now = new DateTime();
$mins = $now->getOffset() / 60;
$sgn = ($mins < 0 ? -1 : 1);
$mins = abs($mins);
$hrs = floor($mins / 60);
$mins -= $hrs * 60;
$offset = sprintf('%+d:%02d', $hrs*$sgn, $mins);
// I already have a connection function
$return = pdo_mysql("SET time_zone='$offset';");
答案 1 :(得分:0)
这是因为MySQL不会在DATETIME
类型上存储时区信息。
可能您的PHP脚本正在发送带有UTC +时区的ISO8601日期字符串,因此MySQL会忽略时区并仅存储UTC。
为避免这种情况,您可以使用跟踪时区的TIMESTAMP
类型。