我想知道MySQL服务器当前设置的时区是什么。我没有我正在使用的计算机的管理员权限,所以我已经通过检查注册表尝试了该方法。
我正在做一个有timestamp
列的表,我注意到时间戳与我计算机上的时间戳不同。这有什么原因吗?我如何检查MySQL服务器上的时区?我如何更改它以匹配我的本地/计算机的时间?
您可以使用
为会话设置时区(如果您知道您的偏移量) set session time_zone = '+00:00';
和恢复到系统默认值
set session time_zone 'SYSTEM';
-
在SQL
timestamp
列中,SQL使用会话的当前时间偏移量在存储时间之前自动将时间转换为UTC。它将是机器的时间偏移量,除非您更改它(3)。根据服务器的设置(sql.ini),它可能会也可能不会总是协调回期望的时区。 -
要获取当前时区偏移量,请尝试执行
SELECT @@session.time_zone;
-
要手动覆盖特定会话其余部分的SQL时区,执行以下命令,用所需的偏移量替换00:00:
SET @@session.time_zone = "+00:00";
查看system_time_zone系统变量
这可能有帮助:
http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html你可以通过mysqld_safe选项——timezone=timezone_name来设置MySQL服务器在启动时的系统时区。您也可以通过在启动mysqld之前设置TZ环境变量来设置它。timezone或TZ的允许值取决于系统。请查阅操作系统文档,了解哪些值是可接受的。
您可以使用CONVERT_TZ
将给定的时间戳转换为UTC(或任何其他您想要的TZ)
SELECT CONVERT_TZ(NOW(),@@session.time_zone,'GMT');
注意,我使用NOW()
作为简单的演示,您将输入想要转换的时间戳。
SELECT CONVERT_TZ($timestamp,'Your Time Zone' @@session.time_zone);
检查您的共享服务器
<?php
echo date_default_timezone_get();
?>
改变<?php
date_default_timezone_set("Africa/Addis_Ababa");
echo date_default_timezone_get();
?>