mysql 多时区实现_MySQL的时区改变?

这篇博客解答了如何在MySQL中更改时区的问题。用户可以通过执行SQL命令如`SET GLOBAL time_zone = 'America/New_York'`来改变全局时区,或者使用`SET time_zone = timezone`来设置会话时区。当遇到时区未知错误时,可能需要先用`mysql_tzinfo_to_sql`加载时区信息。此外,还提供了在PHP中同步MySQL时区的方法。
摘要由CSDN通过智能技术生成

MySQL的时区改变?

如何将UTC中当前的时区更改为GMT +1,正确的行是什么,我是否只需在phpMyAdmin SQL执行中输入它?

我的房东只是给了我这个链接[http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html],然后关闭了,所以我有点迷失了感谢

Karem asked 2020-07-29T13:24:57Z

7个解决方案

40 votes

如Umar所述,最简单的方法是

mysql> SET GLOBAL time_zone = 'America/New_York';

对于具有夏令时调整的时区,使用命名的时区很重要。 但是,对于某些Linux构建,您可能会得到以下响应:

#1298-时区未知或不正确

如果您看到此消息,则可能需要运行tzinfo_to_sql转换...这很容易做到,但并不明显。 在linux命令行中输入:

mysql_tzinfo_to_sql /usr/share/zoneinfo/|mysql -u root mysql -p

提供您的根密码(MySQL根,而不是Linux根),它将把zoneinfo中的所有定义加载到mysql中。 然后,您可以返回并运行

mysql> SET GLOBAL time_zone = timezone;

Ben D answered 2020-07-29T13:26:12Z

35 votes

发出命令:

SET time_zone = 'America/New_York';

(或GMT + 1所在的任何时区。:[http://www.php.net/manual/en/timezones.php)]

这是用于为单个客户端设置MySQL时区的命令,假设您的客户端分布在多个时区中。

该命令应在每个涉及日期的SQL命令之前执行。 如果您的查询通过一个类,那么这很容易实现。

Bryon Hibbetts answered 2020-07-29T13:25:34Z

22 votes

尽管Bryon的答案很有帮助,但我只是添加了他的链接用于PHP时区名称,该名称与MySQL时区名称不同。

如果要将单个会话的时区设置为GMT + 1(准确地说是UTC + 1),只需在该命令中使用字符串“ +01:00”。 即:

SELECT @@global.time_zone, @@session.time_zone;

要查看您的MySQL会话使用的时区,只需执行以下命令:

SELECT @@global.time_zone, @@session.time_zone;

这是一个具有更多详细信息的出色参考:MySQL 5.5时区参考

JJC answered 2020-07-29T13:26:45Z

5 votes

这是每个会话和用户设置同步PHP(> = 5.3)和MySQL时区的方法。 当您需要设置和同步时区时,将其放在运行位置。

date_default_timezone_set($my_timezone);

$n = new \DateTime();

$h = $n->getOffset()/3600;

$i = 60*($h-floor($h));

$offset = sprintf('%+d:%02d', $h, $i);

$this->db->query("SET time_zone='$offset'");

其中$ my_timezone是PHP时区列表中的一个:[http://www.php.net/manual/en/timezones.php]

PHP时区必须转换为MySQL的小时和分钟偏移量。 那就是1-4行所做的。

drolex answered 2020-07-29T13:27:14Z

4 votes

如果您具有SUPER特权,则可以使用以下语句在运行时设置全局服务器时区值:

mysql> SET GLOBAL time_zone = timezone;

Umar Adil answered 2020-07-29T13:27:34Z

1 votes

如果SET time_zone或SET GLOBAL time_zone不起作用,则可以进行以下更改:

更改时区系统,例如:ubuntu ... $ sudo dpkg-reconfigure数据

重新启动服务器,也可以重新启动apache2和mysql(/etc/init.d/mysql重启)

Arjun s answered 2020-07-29T13:28:03Z

0 votes

这很好

$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'");

?>

yaseen ahmed answered 2020-07-29T13:28:24Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值