Besseren Weg, um sicher zu legen Sie die UTC-Zeit Wert in der mySQL TIMESTAMP-variable?

Meiner Anwendung möchte zum einfügen einer timestamp-Wert in eine TIMESTAMP-variable in einer mySQL-Datenbank. Der timestamp-Wert ist eine UTC-Zeit in den üblichen "YYYY-MM-DD HH:MM:SS" - format. Das problem ist, dass mein SQL-server ist so konfiguriert, verwenden Sie die SYSTEM-Zeit (SELECT @@global.time_zone sagt SYSTEM), und die system Zeitzone Europe/London (der server läuft Ubuntu 14.04), also mySQL hat ein Tageslicht-Einsparung-Konvertierung und speichert den Wert einer Stunde aus, was es sein sollte. (Ich denke, wenn ich in einer anderen Zeitzone, z.B. CST dann würde ich ein unerwünschtes timezone offset-als auch die Sommerzeit-Stunde).

Um mySQL, Das Richtige zu tun es scheint, dass ich brauche, um verdeckte den UTC-Zeitstempel in system-Zeit, bevor ich legen Sie es so, dass mySQL konvertieren können, es aus dem system Zeit, um die UTC-Zeit, bevor es speichert Sie intern. Dieses Stück code hat den gewünschten Effekt:-

mysql> select timestamp("2015-05-06 12:34:56")+CURRENT_TIMESTAMP-UTC_TIMESTAMP;
+------------------------------------------------------------------+
| timestamp("2015-05-06 12:34:56")+CURRENT_TIMESTAMP-UTC_TIMESTAMP |
+------------------------------------------------------------------+
|                                            20150506133456.000000 |
+------------------------------------------------------------------+

Ich werde mit diesem Lauf für jetzt, aber es scheint ein bisschen wie ein Theater, so gibt es eine bessere Möglichkeit?

[Bearbeiten] eine Weitere Runde von RTFM ' Ing gab mir diese Idee...

mysql> select CONVERT_TZ("2015-05-06 12:34:56", "+00:00", "SYSTEM");
+-------------------------------------------------------+
| CONVERT_TZ("2015-05-06 12:34:56", "+00:00", "SYSTEM") |
+-------------------------------------------------------+
| 2015-05-06 13:34:56                                   |
+-------------------------------------------------------+

Das sieht viel sauberer aus. Irgendwelche besseren Ideen?

  • Sie konnte einfach legen Sie die mysql-server-Zeitzone auf gmt, entweder Global, oder nur für Ihre Sitzung
  • Ich könnte wenn ich könnte, aber ich kann nicht 🙂
InformationsquelleAutor kbro | 2015-05-05
Schreibe einen Kommentar