Requête MySQL pour L'heure GMT actuelle
cela semble assez simple, mais je n'ai pas été en mesure de comprendre comment utiliser une simple instruction SELECT pour retourner l'heure actuelle en GMT.
j'ai essayé d'utiliser CONVERT_TZ () pour convertir maintenant() en GMT basé sur le fuseau horaire du serveur et le fuseau horaire GMT mais pour une raison quelconque il retourne NULL quand je mets dans les zones de temps de texte. La seule façon d'obtenir un résultat est de mettre réellement dans les compensations qui devient beaucoup trop compliqué pour ce que ça devrait être une opération très simple. Voici ce que je veux dire:
mysql> SELECT CONVERT_TZ(NOW(),@@global.system_time_zone,'GMT');
NULL
mysql> SELECT CONVERT_TZ(NOW(),'PST','GMT');
NULL
mysql> SELECT CONVERT_TZ(NOW(),'-08:00','+00:00');
2010-02-13 18:28:22
Tout ce dont j'ai besoin est une simple requête pour retourner l'heure actuelle au format GMT. Merci d'avance pour votre aide!
10 réponses
il suffit d'utiliser UTC (ne pas être affecté par l'heure avancée)
SELECT UTC_TIMESTAMP();
ancien contenu de référence:
ça devrait marcher, mais avec
SELECT CONVERT_TZ(NOW(),'PST','GMT');
J'ai eu aussi NULL comme résultat. assez drôle l'exemple dans le mysql docu renvoie aussi null
SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz
semble que vous ayez trouvé un bug dans mysql . (merci à +Stephen Pritchard)
vous pouvez essayer:
SET @OLD_TIME_ZONE=@@TIME_ZONE;
SET TIME_ZONE='+00:00';
SELECT NOW();
SET TIME_ZONE=@OLD_TIME_ZONE;
ok n'est pas exactement ce que tu voulais (4 requêtes, mais un seul select :-)
NO BUG in CONVERT_TZ ()
pour utiliser CONVERT_TZ() vous devez installer les tables de fuseau horaire sinon MySql retourne NULL.
à partir du CLI exécuter ce qui suit comme root
# mysql_tzinfo_to_sql / usr / share/zoneinfo | mysql-u root mysql
voir http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html
Merci
http://www.ArcanaVision.com (SJP 2011-08-18)
Note: GMT pourrait avoir DST UTC n'a pas DST
SELECT UTC_TIMESTAMP();
j'ai fait un cheatsheet ici: MySQL doit-il avoir son fuseau horaire réglé sur UTC?
la façon surefire de récupérer le courant UTC datetime est:
SELECT CONVERT_TZ(NOW(), @@session.time_zone, '+0:00')
après avoir vu toutes les réponses ci-dessus et vu qu'il n'est pas fiable de convertir en PST, je viens d'utiliser ceci:
DATE_SUB (user_last_login, intervalle de 7 heures)
cela devrait fonctionner - je pense que vous avez spécifié votre fuseau horaire incorrect. En utilisant Chicago comme exemple
SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT')
lorsque le timestamp du serveur source est inconnu mais que l'exigence est pour un tz spécifique faites ceci:
select convert_tz(utc_timestamp(),'+05:00','+00:00')
cet exemple utilise CST. utc_timestamp garantira un résultat' +00:00 ' peu importe où vous l'interrogez. Le' + 05:00 ' Est votre offset désiré. Cela fonctionne très bien lors de la frappe de plusieurs serveurs inconnus et il vous assure que votre résultat de retour sera tout dans un ensemble de résultats TZ commun.
je cherchais mon fuseau horaire qui est GMT+6 (Asia / Dhaka TimeZone)
MySQL server est en nous. Le dessous a fonctionné pour moi.
SÉLECTIONNEZ CONVERT_TZ( UTC_TIMESTAMP( ) , '+06:00', '+00:00' )
ça devrait marcher SELECT date_add (UTC_TIMESTAMP (), interval 330 minute);
il n'y a pas de bogue dans la fonction CONVERT_TZ. Vous obtenez NULL parce que vous utilisez des noms/abréviations de fuseaux horaires. Mysql ne sait pas ce que signifie ce'GMT',' PST', etc sauf si vous installez mysql.time_zone_name table. Cependant, si vous utilisez des nombres, cela fonctionnera toujours.
mysql> SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT');
renvoie NULL
mysql> SELECT CONVERT_TZ(NOW(),'-08:00','+00:00');
retourne 2016-06-24 17:58: 33