Wie korrekt einrichten, mysql timezone
Ich habe ein seltsames problem bei mysql timezone.
In meiner website config-Datei habe ich diese Zeile setzt die Zeitzone :
mysql_query("SET SESSION time_zone = '$offset';"); //Offset is properly calculated, no worries about that
Das lustige ist, dass wenn ich eine weitere Zeile hinzufügen, direkt nachdem das in etwa so :
$q = mysql_query("SELECT NOW() as now");
$row = mysql_fetch_array($row);
echo $row["now"];
Nach der Ausführung der code, wird die Zeit korrekt angezeigt.
ABER, in manchen anderen Abfragen die ich einfügen Zeilen in Tabellen mit einer Spalte namens Datum, das standardmäßig auf " CURRENT_TIMESTAMP.
Zeilen eingefügt werden, wie diese:
INSERT INTO `sessions` (`user_id`) VALUES `1`
(Die sessions-Tabelle hat eine date
Spalte, die standardmäßig auf CURRENT_TIMESTAMP)
Aber der Wert eingefügt in DB noch Punkte zurück, um die Zeitzone des Servers :((
Irgendwelche Ideen, wie die Arbeit durch diese ?
- Wenn Sie sagen, die Werte eingefügt, in DB-Punkt zurück auf die server-Zeitzone, wie wollen Sie überprüfen? Auch wenn eine Verbindung, wo hast du die
SET SESSION time_zone
trick? - schließen Sie die Verbindung vor dem ausführen des
INSERT
? - Ich bin es die Kontrolle über phpMyAdmin, und NÖ-Verbindung wird nicht geschlossen, bis Ende der Skriptausführung
- keine Ahnung, ob phpMyAdmin könnte das eine Umwandlung zurück, wenn es angezeigt wird ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie verstehen, dass MySQL unterhält mehrere Zeitzonen-Einstellungen:
Sehen http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html für details.
Datum/Zeit Werte gespeichert werden, auf zwei verschiedene Arten:
Aus dem obigen sollte klar werden, dass die Werte, die Sie sehen, wenn Sie das Lesen von unix-timestamp, basierend Spalten sind nicht unbedingt das, was wirklich ist, gespeichert in der DB. Sie umgewandelt werden mit der Zeitzone des Servers und der client-Zeitzone. Das Ergebnis kann verwirrend sein, wenn Sie nicht verstehen, die details der mechanik.
Für einen ersten test versuchen herauszufinden, die aktuellen Einstellungen in jedem Ihrer client-Programme durch ausführen
Den globalen Zeitzone wird immer die gleiche sein. Aber die session-Zeitzone kann sich von der client-Anwendung zur client-Anwendung und ändern Sie die Ergebnisse Ihrer lese-und schreib-Operationen.
Per-connection time zones. Each client that connects has its own time zone setting, given by the session time_zone variable. Initially, the session variable takes its value from the global time_zone variable, but the client can change its own time zone with this statement: mysql> SET time_zone = timezone;