2010-02-18 3 views
6

Soit je suis stupide ou quelque chose ne va pas ici.Comment SELECT UTC_TIMESTAMP() peut retourner -10: 00 UTC?

J'ai deux serveurs SQL, l'on est sur ma machine locale (heure locale GMT +2 ) et l'autre est un autre endroit (NOW() semble revenir GMT + 8) et j'accéder via phpMyAdmin. J'ai une table qui a une colonne DATETIME. J'essaie

pour stocker le GMT/UTC heure puis l'afficher à nouveau, toujours avec le temps GMT/UTC.

À l'origine j'ai stocké DATE_SUB(NOW(), INTERVAL 8 HOUR) qui a fonctionné très bien. Cependant, alors j'ai lu sur UTC_TIMESTAMP() et aimé plus, comme il était plus court et le MySQL manual même dit:

« Le réglage de fuseau horaire ne modifie pas les valeurs affichées par les fonctions telles que UTC_TIMESTAMP() ou valeurs DATE, TIME ou DATETIME colonnes. "

Alors, parfait, n'est-ce pas? Sauf non.

Supposons que le courant GMT est 2010-02-18 17:18:17 (j'ai même vérifié deux fois avec quelqu'un en Grande-Bretagne).

Sur mon serveur local (2), je reçois les résultats suivants pour les requêtes suivantes:

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

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

Sur mon serveur en ligne je reçois:

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

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

Am I Quelque chose qui manque ?!

+0

Je souffre du même problème. – diEcho

Répondre

10

Probablement parce que l'horloge est erronée sur le serveur en ligne?

Essayez de lancer:

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

et voir dans quelle zone il ne retourne et répond-il la différence.

+0

@@ system_time_zone \t NOW() \t UTC_TIMESTAMP() CST \t 2010-02-19 01:35:30 \t 2010-02-19 07:35:30 Donc, si je comprends bien ce droit, le serveur dit que c'est CST (-6) et il est réglé à 01h35, donc SQL dit bien alors ajouter 6 pour arriver à UTC ... BAH! C'est frustrant. Merci de m'avoir éclairci, je pensais que je faisais quelque chose de mal ça m'a rendu fou. – Alex

+0

Pourquoi est-ce frustrant? MAINTENANT() est l'heure actuelle après que le fuseau horaire ait pris effet, donc les fonctions font leur travail parfaitement non? – deed02392

+0

@Alex Je pense que la logique/explication de MySQL prend tout son sens, d'ailleurs, laquelle n'était pas correcte selon son fuseau horaire, c'est-à-dire votre serveur local ou votre serveur en ligne? – sactiw

Questions connexes