2010-02-18 6 views
6

Entweder bin ich dumm oder irgendwas stimmt hier nicht.Wie kann SELECT UTC_TIMESTAMP() -10: 00 UTC zurückgeben?

ich zwei SQL-Server haben, ist das auf meinem lokalen Rechner (Ortszeit +2 GMT) und das andere ist woanders (NOW() scheint +8 GMT zurückzukehren) und ich auf sie durch phpMyAdmin. Ich habe eine Tabelle, die eine Spalte hat. Ich versuche

die aktuelle GMT/UTC Zeit zu speichern und es dann wieder angezeigt wird, nach wie vor als GMT/UTC-Zeit.

Ursprünglich habe ich DATE_SUB(NOW(), INTERVAL 8 HOUR) gespeichert, die gut funktioniert. Doch dann las ich über UTC_TIMESTAMP() und mochte es mehr, wie es war kürzer und die MySQL manual sagte sogar:

„Die aktuelle Einstellung Zeitzone nicht angezeigte Werte von Funktionen wie UTC_TIMESTAMP beeinflussen() oder Werte in Spalten DATE, TIME oder DATETIME. "

So perfekt oder? Außer nein.

Nehmen wir an Aktuelle GMT ist 2010-02-18 17:18:17 (Ich habe es sogar mit jemandem in Großbritannien überprüft).

Auf meinem lokalen (+2) Server, ich die folgenden Ergebnisse für die folgenden Abfragen erhalten:

SELECT NOW(); 2010-02-18 19:18:17 

SELECT UTC_TIMESTAMP(); 2010-02-18 17:18:17 

Auf mein Online-Server erhalte ich:

SELECT NOW(); 2010-02-19 01:18:17 

SELECT UTC_TIMESTAMP(); 2010-02-19 07:18:17 (WHY?!) 

Am I etwas vermissen?!

+0

ich leide mit dem gleichen Problem. – diEcho

Antwort

10

Wahrscheinlich weil die Uhr auf dem Online-Server falsch ist?

Versuchen Sie, diese ausgeführt wird:

SELECT @@system_time_zone, NOW(), UTC_TIMESTAMP() 

und sehen, welche Zone es zurückkommt und es den Unterschied entspricht.

+0

@@ system_time_zone \t NOW() \t UTC_TIMESTAMP() CST \t 2010-02-19 01:35:30 \t 2010-02-19 07:35:30 Also, wenn ich das richtig bin zu verstehen, wobei der Server sagt, es ist CST (-6) und es ist auf 1:35 Uhr eingestellt, also sagt SQL gut, dann addiert 6, um an UTC zu kommen ... BAH! Wie frustrierend. Danke für die Klärung, ich dachte, ich würde etwas falsch machen, es hat mich verrückt gemacht. – Alex

+0

Warum ist das frustrierend? NOW() ist die aktuelle Zeit nach dem die Zeitzone wirksam wird, also funktionieren die Funktionen einwandfrei? – deed02392

+0

@Alex Ich denke, MySQL Logik/Erklärung macht voll und ganz Sinn, also, welche war nicht richtig in Bezug auf ihre Zeitzone, d. H. Ihre lokalen Server oder Online-Server? – sactiw