web-dev-qa-db-fra.com

Requête MySQL pour l'heure GMT actuelle

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!

25
Russell C.

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 :-)

36
Rufinus

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)

13
Stephen Pritchard

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?

12
Timo Huovinen

Le moyen sûr de récupérer la date/heure UTC actuelle est:

SELECT CONVERT_TZ(NOW(), @@session.time_zone, '+0:00')
4
FrankerZ

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.

0
Mark

Cela devrait fonctionnerSELECT date_add (UTC_TIMESTAMP (), intervalle 330 minutes);

0
Anand Vishwakarma

Cela devrait fonctionner. Je pense que votre fuseau horaire est incorrect. En utilisant Chicago comme exemple

SELECT CONVERT_TZ(NOW(), 'America/Chicago', 'GMT')
0
konung

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')

0

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)

0
Mauvis Ledford