Kann MySQL konvertieren Sie eine gespeicherte UTC-Zeit in die lokale Zeitzone?

Kann MySQL konvertieren Sie eine gespeicherte UTC-Zeit in lokale timezon:ed Zeit direkt in einer normalen select-Anweisung?

Lassen Sie uns sagen, Sie haben einige Daten mit einem Zeitstempel (UTC).

CREATE TABLE `SomeDateTable` (
  `id`    int(11) NOT NULL auto_increment,
  `value` float NOT NULL default '0',
  `date`  datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
)

Dann, wenn ich

"select value, date from SomeDateTable";

Ich natürlich erhalten Sie alle Termine in Ihren gespeicherten UTC-form.

Aber sagen wir mal, ich möchte Sie haben in einer anderen Zeitzone (mit Sommerzeit),
kann ich dann fügen Sie etwas Magie, um die select-Abfrage so, dass ich alle Termine zurück, die in der ausgewählten Zeitzone?

"select value, TIMEZONE(date, "Europe/Berlin") from SomeDateTable";

Oder muss ich das in einige andere Schicht auf der Oberseite, wie in einigen php-code?
(es scheint, wie die meisten Leute dieses problem gelöst haben).

Dank
Johan


Wenn Ihre MySQL-installation ermöglicht Ihnen den Einsatz CONVERT_TZ es ist eine sehr saubere Lösung
dieses Beispiel zeigt, wie es zu benutzen.

SELECT CONVERT_TZ( '2010-01-01 12:00', 'UTC', 'Europe/Stockholm' )

Allerdings weiß ich nicht, ob das ein guter Weg, da einige MySQL-installation fehlt diese Funktion, verwenden Sie es mit Vorsicht.

InformationsquelleAutor Johan | 2010-02-02

Schreibe einen Kommentar