web-dev-qa-db-fra.com

Comment convertir la date UTC en fuseau horaire local dans MySql Sélectionnez une requête

J'utilise cette condition Where dans l'une de mes requêtes avec MySql Database.My Le problème est que j'ai une colonne displaytime dans ma table, mais cette colonne de table affiche les données en heure UTC.et je souhaite convertir cette colonne displaytime en heure locale Zone.so comment puis-je fournir cette installation de requête elle-même.

J'ai goggled les choses et par là j'ai su que quelque chose comme SELECT CONVERT_TZ() fonctionnera pour cela. Mais cela ne fonctionne pas pour moi.

Voici ma requête dans laquelle j'ai besoin de convertir displaytime en fuseau horaire local ... alors quelqu'un peut-il me guider s'il vous plaît?

WHERE displaytime >= '2012-12-01 00:00:00'
  AND displaytime <='2013-02-22 23:59:59'
  AND ct.organizationId IN (
    SELECT t.organizationId
      FROM organization_ AS t
      JOIN organization_ AS p ON t.treePath LIKE CONCAT(p.treePath, '%')
     WHERE p.organizationId = 10707

enter image description here SAmple DAta

enter image description here

46
User 1531343

SELECT CONVERT_TZ () fonctionnera pour cela. Mais cela ne fonctionnera pas pour moi.

Pourquoi, quelle erreur obtenez-vous?

SELECT CONVERT_TZ(displaytime,'GMT','MET');

devrait fonctionner si votre type de colonne est timestamp ou date

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_convert-tz

Testez comment cela fonctionne:

SELECT CONVERT_TZ(a_ad_display.displaytime,'+00:00','+04:00');

Vérifiez votre table de fuseau horaire

SELECT * FROM mysql.time_zone;
SELECT * FROM mysql.time_zone_name;

http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

Si ces tables sont vides, vous n'avez pas initialisé vos tables de fuseaux horaires. Selon le lien ci-dessus, vous pouvez utiliser mysql_tzinfo_to_sql programme pour charger les tables de fuseaux horaires. S'il vous plaît essayer ceci

Shell> mysql_tzinfo_to_sql /usr/share/zoneinfo

ou si cela ne fonctionne pas, lisez plus: http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html

101
iiro

Dans mon cas, où les fuseaux horaires ne sont pas disponibles sur le serveur, cela fonctionne très bien:

SELECT CONVERT_TZ(`date_field`,'+00:00',@@global.time_zone) FROM `table`

Remarque: global.time_zone utilise le fuseau horaire du serveur. Vous devez vous assurer qu'il a le fuseau horaire souhaité!

25
Felix Geenen
 select convert_tz(now(),@@session.time_zone,'+05:30')

remplacez '+05: 30' par le fuseau horaire souhaité. voir ici - https://stackoverflow.com/a/3984412/2359994

pour formater au format horaire souhaité, par exemple:

 select DATE_FORMAT(convert_tz(now(),@@session.time_zone,'+05:30') ,'%b %d %Y %h:%i:%s %p') 

vous obtiendrez pareil -> 17 décembre 2014 10:39:56

10
Som