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