Beim MySQL-Server gibt es mehrere verschiedene Zeitzoneneinstellungen:
Die Systemzeitzone. Wenn der Server startet, versucht er die
Zeitzone des Hostcomputers zu ermitteln und weist diesen
Wert dann der Systemvariable
system_time_zone
zu. Der Wert wird
nachfolgend nicht mehr geändert.
Die aktuelle Zeitzone des Servers. Die globale
Systemvariable time_zone
gibt die
Zeitzone an, in der der Server derzeit läuft. Der Startwert
für time_zone
ist
'SYSTEM'
, d. h. die Serverzeitzone ist
mit der Systemzeitzone identisch. Der Ausgangswert lässt
sich mit der Option
--default-time-zone=
auch ausdrücklich festlegen. Wenn Sie die Berechtigung
timezone
SUPER
haben, können Sie den globalen
Wert mit folgender Anweisung zur Laufzeit ändern:
mysql> SET GLOBAL time_zone = timezone
;
Verbindungsspezifische Zeitzonen. Jeder Client, der eine
Verbindung herstellt, hat eine eigene Zeitzoneneinstellung,
die von der Sitzungsvariablen time_zone
vorgegeben wird. Standardmäßig erhält die
Sitzungsvariable den Wert von der globalen Variable
time_zone
, der Client kann seine Zeitzone
aber mit folgender Anweisung ändern:
mysql> SET time_zone = timezone
;
Die aktuellen Werte der globalen und der clientspezifischen Zeitzone lassen sich wie folgt abrufen:
mysql> SELECT @@global.time_zone, @@session.time_zone;
timezone
-Werte können als Strings
angegeben werden, die einen Offset zur UTC angeben (z. B.
'+10:00'
oder '-6:00'
).
Wenn die Zeitzonen-Informationstabellen in der
mysql
-Datenbank erstellt und ausgefüllt
wurden, können Sie auch benannte Zeitzonen wie etwa
'Europe/Helsinki'
,
'US/Eastern'
oder 'MET'
verwenden. Mit dem Wert 'SYSTEM'
kann
angegeben werden, dass die Zeitzone denselben Wert haben sollte
wie die Systemzeitzone. Bei den Zeitzonennamen wird die
Groß-/Kleinschreibung nicht unterschieden.
Der MySQL-Installationsvorgang erzeugt Zeitzonentabellen in der
mysql
-Datenbank, lädt diese aber nicht. Dies
müssen Sie manuell tun. (Wenn Sie von einer früheren Version
auf MySQL 4.1.3 oder höher aktualisieren, sollten Sie die
Tabellen erstellen, indem Sie ein Upgrade Ihrer
mysql
-Datenbank durchführen. Verwenden Sie
hierzu die Anleitung in
Abschnitt 5.6, „mysql_fix_privilege_tables — Upgrade von MySQL-Systemtabellen“.)
Wenn Ihr System eine eigene
zoneinfo-Datenbank hat (dies ist ein Satz
von Dateien, die die Zeitzonen beschreiben), dann sollten Sie
das Programm mysql_tzinfo_to_sql zum
Ausfüllen der Zeitzonentabellen verwenden. Beispiele für
solche Systeme sind Linux, FreeBSD, Sun Solaris und Mac OS X.
Eine wahrscheinliche Position für diese Dateien ist das
Verzeichnis /usr/share/zoneinfo
. Verfügt
Ihr System nicht über eine zoneinfo-Datenbank, dann können Sie
das im weiteren Verlauf dieses Abschnitts genannte Paket
herunterladen und verwenden.
Das Programm mysql_tzinfo_to_sql wird zum Laden der Zeitzonentabellen verwendet. Auf der Befehlszeile übergeben Sie den Pfadnamen des zoneinfo-Verzeichnisses an mysql_tzinfo_to_sql und leiten die Ausgabe in das Programm mysql. Zum Beispiel:
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
mysql_tzinfo_to_sql liest die Zeitzonendateien Ihres Systems aus und erzeugt daraus SQL-Anweisungen. mysql verarbeitet diese Anweisungen, um die Zeitzonentabellen zu laden.
mysql_tzinfo_to_sql kann auch zum Laden einer einzelnen Zeitzonendatei und zur Erzeugung von Schaltsekunden verwendet werden:
Um eine einzelne Zeitzonendatei
tz_file
zu laden, die einem
Zeitzonennamen tz_name
entspricht, rufen Sie mysql_tzinfo_to_sql
wie folgt auf:
shell> mysql_tzinfo_to_sql tz_file
tz_name
| mysql -u root mysql
Wenn Ihre Zeitzone Schaltsekunden berücksichtigen muss,
initialisieren Sie die Schaltsekundeninformation wie folgt
(hierbei ist tz_file
der Name der
Zeitzonendatei):
shell> mysql_tzinfo_to_sql --leap tz_file
| mysql -u root mysql
Verfügt Ihr System über keine zoneinfo-Datenbank (dies gilt
beispielsweise für Windows oder HP-UX), dann können Sie das
Paket mit den vorerstellten Zeitzonentabellen verwenden, welches
unter http://dev.mysql.com/downloads/timezones.html
heruntergeladen werden kann. Dieses Paket enthält
.frm
-, .MYD
- und
.MYI
-Dateien für die
MyISAM
-Zeitzonentabellen. Diese Tabellen
sollten Teil der mysql
-Datenbank sein, d. h.
Sie sollten Sie Dateien im Unterverzeichnis
mysql
des Datenverzeichnisses Ihres
MySQL-Servers ablegen. Währenddessen sollte der Server beendet
sein.
Warnung: Verwenden Sie das herunterzuladende Paket nicht, wenn Ihr System über eine zoneinfo-Datenbank verfügt. Benutzen Sie stattdessen das Hilfsprogramm mysql_tzinfo_to_sql. Andernfalls kann es zu Diskrepanzen in der Verarbeitung von Datum und Uhrzeit zwischen MySQL und anderen Anwendungen auf Ihrem System kommen.
Informationen zu Zeitzoneneinstellungen in der Replikationskonfiguration finden Sie in Abschnitt 6.8, „Replikation: Features und bekannte Probleme“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.