webentwicklung-frage-antwort-db.com.de

MySQL-Zeitzonenänderung?

Wie ändere ich meine Zeitzone, die sich derzeit in UTC befindet, in GMT +1, was ist die richtige Zeile und gebe ich sie einfach in die SQL-Ausführung von phpMyAdmin ein? 

Mein Gastgeber gab mir gerade diesen Link http://dev.mysql.com/doc/refman/5.1/de/time-zone-support.html und ging aus, also bin ich irgendwie dankbar

43
Karem

geben Sie den Befehl aus:

SET time_zone = 'America/New_York';

(Oder wie auch immer die Zeitzone GMT + 1 lautet: http://www.php.net/manual/de/timezones.php )

Dies ist der Befehl, um die MySQL-Zeitzone für einen einzelnen Client festzulegen. Dabei wird davon ausgegangen, dass Ihre Clients über mehrere Zeitzonen verteilt sind.

Dieser Befehl sollte vor jedem SQL-Befehl mit Datumsangaben ausgeführt werden. Wenn Ihre Abfragen eine Klasse durchlaufen, ist dies einfach zu implementieren.

35
Bryon Hibbetts

Der einfachste Weg, dies zu tun, ist beispielsweise von Umar

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

Die Verwendung der genannten Zeitzone ist für Zeitzonen mit Tageslichtsparfunktion wichtig. Bei einigen Linux-Builds erhalten Sie jedoch möglicherweise die folgende Antwort:

# 1298 - Unbekannte oder falsche Zeitzone

Wenn Sie dies sehen, müssen Sie möglicherweise eine tzinfo_to_sql-Übersetzung ausführen. Das ist einfach, aber nicht offensichtlich. Geben Sie in die Linux-Befehlszeile Folgendes ein:

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

Geben Sie Ihr root-Passwort ein (MySQL root, nicht Linux root) und es werden alle Definitionen in Ihrem zoneinfo in mysql geladen. Sie können dann zurückgehen und Ihr ausführen 

mysql> SET GLOBAL time_zone = timezone;
39
Ben D

Bryons Antwort ist zwar hilfreich, aber ich möchte nur hinzufügen, dass sein Link für PHP Zeitzonen-Namen steht, die nicht mit MySQL-Zeitzonen-Namen identisch sind. 

Wenn Sie Ihre Zeitzone für eine einzelne Sitzung auf GMT + 1 (genauer: UTC + 1) setzen möchten, verwenden Sie einfach die Zeichenfolge '+01: 00' in diesem Befehl. I.e .: 

SET time_zone = '+01:00';

Um zu sehen, welche Zeitzone Ihre MySQL-Sitzung verwendet, führen Sie einfach folgendes aus:

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

Dies ist eine großartige Referenz mit mehr Details: MySQL 5.5-Referenz zu Zeitzonen

21
JJC

So synchronisieren Sie PHP (> = 5.3) und MySQL-Zeitzonen pro Sitzung und Benutzereinstellungen. Stellen Sie dies dort ein, wo es ausgeführt wird, wenn Sie Zeitzonen festlegen und synchronisieren müssen.

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 steht in der Liste der Zeitzonen PHP: http://www.php.net/manual/de/timezones.php

Die Zeitzone PHP muss für MySQL in den Stunden- und Minuten-Offset konvertiert werden. Das ist was die Zeilen 1 bis 4 tun.

5
drolex

Wenn Sie das SUPER-Privileg haben, können Sie den Wert der globalen Zeitzone des Servers zur Laufzeit mit dieser Anweisung festlegen:

mysql> SET GLOBAL time_zone = timezone;
4
Umar Adil

Wenn SET time_zone oder SET GLOBAL time_zone nicht funktioniert, können Sie Folgendes ändern: 

  • Ändern Sie das Zeitzonensystem, Beispiel: ubuntu ... $ Sudo dpkg-reconfigure Tzdata

  • Starten Sie den Server neu, oder starten Sie Apache2 und mysql Neu. (/ Etc/init.d/mysql restart)

1
Arjun s

Das funktioniert gut

<?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