通过 PhPMyAdmin 在 MySql Server 上设置默认时区
Posted
技术标签:
【中文标题】通过 PhPMyAdmin 在 MySql Server 上设置默认时区【英文标题】:Setting default-time-zone on MySql Server via PhPMyAdmin 【发布时间】:2011-07-19 21:21:11 【问题描述】:我有一个共享托管 mysql 实例,它的 system_time_zone 设置为太平洋标准时间,time_zone 变量设置为 System,因此它实际上是在太平洋标准时间运行。
即我已经运行以下命令来找出答案:
SELECT version( ) , @@time_zone , @@system_time_zone , NOW( ) , UTC_TIMESTAMP( )
我想将默认的 mySql 数据库/本地 mySql 数据库时区更改为 GMT/UTC 时间。我尝试运行SET time_zone = '+0:00'
,这确实成功执行了!
但是,当我检查@@time_zone 的状态时,这似乎不会影响 time_zone 变量。我看过另一篇处理类似问题的帖子How to set MySQL to use GMT in Windows and Linux,我还检查了MySql documentation,进展甚微。由于我使用的是共享托管解决方案,因此我的访问权限有限,而且我无法访问比我的 phpMyAdmin mySql 功能提供的更多内容。
我想知道是否有任何方法可以从 SQL 查询中更改 default_time-zone,或者我是否需要退回到命令行(很遗憾,我无权访问)。
感谢您的帮助和建议,
马丁
【问题讨论】:
你试过 SET SESSION time_zone = '+0:00' 还是 SET GLOBAL time_zone = '+0:00'? 感谢提示“client09”,但不幸的是,我收到“#1227 - 访问被拒绝;您需要此操作的 SUPER 权限”,共享主机权限不足。 【参考方案1】:对于共享主机,您必须请支持人员帮助您并为您更改默认时区?我与 Arcor 托管服务提供商有类似的问题,打电话给他们,他们修复了它。在此之前,我从 PHP 代码中找到了 date_default_timezone_set()
的临时解决方案。可能最好的解决方案是请有权更改该参数的人。
【讨论】:
我认为在我的共享主机情况下,这可能是最明智的做法。我联系了他们,不幸的是他们拒绝为我更改默认时区。我发现这很奇怪,但我没有跟进,因为我当时决定在服务器端将所有时间转换为 UTC,而只使用 UTC,这似乎有效。【参考方案2】:简而言之,MySQL
实际上在内部将“datetime
”数据类型字段存储为UTC
。
However
, PhpMyAdmin
使用服务器默认时间向您显示日期,因此您会感到困惑。
例如,尝试在PhpMyAdmin
中的 SQL 语句之前添加这一行:
SET @@session.time_zone='+00:00';
SELECT * FROM MY_TABLE
有关更多详细信息,请参阅MySQL
文档,或此帖子中的答案:How to correctly set mysql timezone
干杯 马特
【讨论】:
【参考方案3】:<?php
date_default_timezone_set('UTC'); //define local time
$date=date('l jS \of F Y h:i:s A'); //type of time shown
$conn=mysql_connect("localhost","root","") or die('Could not connect!'); //your database connection here
$db_selected = mysql_select_db('databasename', $conn); //select db
$result=mysql_query("INSERT INTO table (date) VALUES ('$date')", $conn);
?>
只需将时间作为 VARCHAR 发送到数据库中,希望对您有所帮助,并对语法错误(如果有的话)表示歉意。
【讨论】:
以上是关于通过 PhPMyAdmin 在 MySql Server 上设置默认时区的主要内容,如果未能解决你的问题,请参考以下文章
通过 phpmyadmin 访问在 mysql 中创建的数据库
无法通过在 phpMyAdmin 中创建的用户在命令行中访问 MySQL
如何通过 phpmyadmin 将 csv 文件导入 mysql