web-dev-qa-db-ja.com

MySQLタイムゾーンの変更?

現在UTCにあるタイムゾーンをGMT +1に変更するにはどうすればよいですか?正しい行は何ですか?また、phpMyAdmin SQL実行でそれを入力するだけですか?

私のホストはちょうど私にこのリンクを与えました http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html そして私はちょっと失われた感謝です

43
Karem

次のコマンドを発行します。

SET time_zone = 'America/New_York';

(またはGMT + 1のタイムゾーンは何でも: http://www.php.net/manual/en/timezones.php

これは、クライアントが複数のタイムゾーンに分散していると仮定して、個々のクライアントのMySQLタイムゾーンを設定するコマンドです。

このコマンドは、日付を含むすべてのSQLコマンドの前に実行する必要があります。クエリがクラスを通過する場合、これは簡単に実装できます。

35
Bryon Hibbetts

これを行う最も簡単な方法は、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

ルートパスワード(Linuxルートではなく、MySQLルート)を入力すると、zoneinfoの定義がmysqlにロードされます。その後、戻って実行することができます

mysql> SET GLOBAL time_zone = timezone;
40
Ben D

Bryonの答えは役に立ちますが、彼のリンクはPHPタイムゾーン名のためのものであり、MySQLタイムゾーン名とは異なります。

個々のセッションのタイムゾーンをGMT + 1(正確にはUTC + 1)に設定する場合は、そのコマンドで文字列「+01:00」を使用します。つまり:

SET time_zone = '+01:00';

MySQLセッションが使用しているタイムゾーンを確認するには、次を実行します。

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

これは、より詳細な素晴らしいリファレンスです: タイムゾーンに関するMySQL 5.5リファレンス

22
JJC

セッションとユーザー設定ごとの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 timezones: http://www.php.net/manual/en/timezones.php

PHPタイムゾーンは、MySQLの時間と分のオフセットに変換する必要があります。それが1行目から4行目です。

5
drolex

SUPER特権を持っている場合は、次のステートメントを使用して、実行時にグローバルサーバーのタイムゾーン値を設定できます。

mysql> SET GLOBAL time_zone = timezone;
4
Umar Adil

SET time_zoneまたはSET GLOBAL time_zoneが機能しない場合は、次のように変更できます。

  • タイムゾーンシステムの変更、例:ubuntu ... $ sudo dpkg-reconfigure tzdata

  • サーバーを再起動するか、Apache2とmysqlを再起動します(/etc/init.d/mysql restart)

1
Arjun s

これはうまくいきます

<?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'");
?>
0
yaseen ahmed