Cela semble assez simple, mais je n’ai pas réussi à comprendre comment utiliser une simple instruction SELECT pour renvoyer l’heure à l’heure GMT.
J'ai essayé d'utiliser CONVERT_TZ () pour convertir NOW () en GMT en fonction du fuseau horaire du serveur et du fuseau horaire GMT, mais pour une raison quelconque, il renvoie la valeur NULL lorsque je mets le texte des fuseaux horaires. Le seul moyen d'obtenir un résultat est de créer des compensations, ce qui devient de plus en plus compliqué pour une opération qui devrait être vraiment 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 requête simple pour retourner l'heure actuelle à GMT. Merci d'avance pour votre aide!
Il suffit d'utiliser UTC (ne pas être affecté par l'heure d'été)
SELECT UTC_TIMESTAMP();
Ancien contenu pour référence:
cela devrait fonctionner, mais avec
SELECT CONVERT_TZ(NOW(),'PST','GMT');
j'ai aussi NULL comme résultat. assez drôle l'exemple dans le docu mysql renvoie également 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-tzsemble que vous avez trouvé un bug dans mysql. (merci à + Stephen Pritchard)
tu pourrais 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 vous vouliez (ses 4 requêtes, mais une seule sélection :-)
NO BUG dans CONVERT_TZ ()
Pour utiliser CONVERT_TZ (), vous devez installer les tables de fuseaux horaires, sinon MySql renvoie NULL.
À partir de la CLI, exécutez ce qui suit en tant que root.
# mysql_tzinfo_to_sql/usr/share/zoneinfo | mysql -u racine mysql
VOIR http://dev.mysql.com/doc/refman/5.5/fr/time-zone-support.html
Merci
http://www.ArcanaVision.com (SJP 2011-08-18)
Remarque: GMT pourrait avoir l’heure d’été UTC n’a pas l’heure d’été
SELECT UTC_TIMESTAMP();
J'ai créé une feuille de triche ici: Le fuseau horaire de MySQL doit-il être défini sur UTC?
Le moyen sûr de récupérer la date/heure UTC actuelle est:
SELECT CONVERT_TZ(NOW(), @@session.time_zone, '+0:00')
Lorsque l'horodatage du serveur source est inconnu mais que l'exigence concerne un tz spécifique, procédez comme suit:
select convert_tz(utc_timestamp(),'+05:00','+00:00')
CST est utilisé à titre d’exemple à titre d’exemple. frapper plusieurs serveurs inconnus et cela vous assure que vous retournerez le résultat sera tous dans un jeu de résultats tz commun.
Cela devrait fonctionnerSELECT date_add (UTC_TIMESTAMP (), intervalle 330 minutes);
Cela devrait fonctionner. Je pense que votre fuseau horaire est incorrect. En utilisant Chicago comme exemple
SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT')
Je cherchais mon fuseau horaire qui est GMT + 6 (Asia/Dhaka TimeZone)
Le serveur MySQL est aux États-Unis. Le dessous a fonctionné pour moi.
SELECT CONVERT_TZ (UTC_TIMESTAMP (), '+06: 00', '+00: 00')
Après avoir vu toutes les réponses ci-dessus et constaté que la conversion au format PST n'est pas fiable, je viens de l'utiliser
DATE_SUB (user_last_login, INTERVAL 7 hour)