MySQL timezone change?
如何将UTC中当前的时区更改为GMT +1,正确的行是什么,我是否只需在phpMyAdmin SQL执行中输入它?
我的房东只是给了我这个链接http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html而关闭了,所以我有点迷失了感谢
如Umar所述,最简单的方法是
对于具有夏令时调整的时区,使用命名的时区很重要。但是,对于某些Linux构建,您可能会得到以下响应:
#1298 - Unknown or incorrect time zone
如果您看到此消息,则可能需要运行tzinfo_to_sql转换……这很容易做到,但并不明显。在linux命令行中输入:
1 | mysql_tzinfo_to_sql /usr/share/zoneinfo/|mysql -u root mysql -p |
提供您的root密码(MySQL root,而不是Linux root),它将把zoneinfo中的所有定义加载到mysql中。然后,您可以返回并运行
发出命令:
1 |
(或GMT + 1所在的任何时区。:http://www.php.net/manual/en/timezones.php)
这是为单个客户端设置MySQL时区的命令,假设您的客户端分布在多个时区中。
该命令应在每个涉及日期的SQL命令之前执行。如果您的查询通过一个类,那么这很容易实现。
尽管Bryon的答案很有帮助,但我只是添加了他的链接用于PHP时区名称,该名称与MySQL时区名称不同。
如果要将单个会话的时区设置为GMT + 1(准确地说是UTC + 1),只需在该命令中使用字符串" +01:00"。即:
要查看您的MySQL会话使用的时区,只需执行以下命令:
这是一个具有更多详细信息的出色参考:MySQL 5.5时区参考
这是每个会话和用户设置同步PHP(> = 5.3)和MySQL时区的方法。在需要设置和同步时区时,将其放置在运行位置。
1 2 3 4 5 6 |
其中$ my_timezone是PHP时区列表中的一个:http://www.php.net/manual/zh/timezones.php
PHP时区必须转换为MySQL的小时和分钟偏移量。那就是1-4行所做的。
如果您具有SUPER特权,则可以使用以下语句在运行时设置全局服务器时区值:
如果SET time_zone或SET GLOBAL time_zone不起作用,则可以进行以下更改:
-
更改时区系统,例如:ubuntu ... $ sudo dpkg-reconfigure
数据 -
重新启动服务器,也可以重新启动apache2和mysql
(/etc/init.d/mysql重启)
这很好
1 2 3 4 5 6 | <?php $con=mysqli_connect("localhost","my_user","my_password","my_db"); $con->query("SET GLOBAL time_zone = 'Asia/Calcutta'"); $con->query("SET time_zone = '+05:30'"); $con->query("SET @@session.time_zone = '+05:30'"); ?> |