119 votes

convert_tz retourne null

Je sais que ça semble stupide, mais quand j'utilise

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time

il produit NULL. J'utilise MySQL Workbench dans Ubuntu 12.04 64 bit, et cela fonctionne dans mon autre ordinateur portable/os (qui utilise également MySQL Workbench).

223voto

Barmar Points 135986

Cela se produit si vous n'avez pas chargé la table des fuseaux horaires dans mysql.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

mysql est le nom de la base de données intégrée qui contient les données de configuration spécifiques à MySQL.

29voto

Jim Schubert Points 10234

J'ai trouvé ce fil de discussion après avoir passé un certain temps à essayer de comprendre pourquoi, après avoir exécuté la commande dans la réponse acceptée (qui est la même sur le site de développement de MySQL), la commande était incapable de convertir entre les fuseaux horaires tels que

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','MET') AS time

Il s'avère que sous OS X, il y a deux fichiers qui posent problème : /usr/share/zoneinfo/Factory y /usr/share/zoneinfo/+VERSION .

La solution... déplacer temporairement ces fichiers vers un autre emplacement tel que /usr/share/zoneinfo/.bak/ permet la commande

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

pour remplir complètement toutes les informations sur les fuseaux horaires.

Il peut s'agir ou non d'un bogue dans la version de MySQL que j'ai installée :

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.11, for osx10.6 (x86_64) using  EditLine wrapper

J'opère également dans STRICT_MODE .

Quoi qu'il en soit, j'espère que cela évitera quelques maux de tête à tous ceux qui cherchent la solution.

17voto

Rakesh Points 41

En dehors de l'environnement Windows, vous pouvez définir le fuseau horaire par

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Sur Windows l'environnement,

1. download Time zone description tables from http://dev.mysql.com/downloads/timezones.html

2. Stop MySQL server

3. Put then inside Mysql installation package (c'est-à-dire. C:\Program Fichiers \MySQL\data\mysql )`

4. Start MySQL server

..Votre travail est terminé..

Si vous obtenez toujours NULL pour CONVERT_TZ Téléchargez ces tables de base de données et insérez-les dans la base de données mysql. http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.html

Maintenant votre problème sera résolu :)

3voto

Jaseem Abbas Points 2286

MAMP PRO

  1. Ouvrir Terminal
  2. cd /usr/share/zoneinfo/
  3. sudo mv +VERSION ~/Desktop
  4. cd /applications/MAMP/Library/bin
  5. sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
  6. sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/

3voto

Udhayakumar Points 899

Voici les étapes à suivre pour que cela fonctionne si vous êtes sous Windows et que vous utilisez MySQL 5.7.

  1. Cliquez avec le bouton droit de la souris sur Mon Ordinateur/Computer/This PC ou quel que soit son nom dans votre système d'exploitation et choisissez Propriétés.
  2. Choisissez "Paramètres système avancés" dans le panneau de gauche.
  3. Choisissez "Variables d'environnement", entrez le nom complet du chemin d'accès à votre répertoire bin de MySQL (en général, il sera dans, C:\Program Fichiers \MySQL\MySQL Serveur 5.7 \bin ).
  4. Ouvrez l'invite cmd, entrez dans mysql en utilisant mysql -u root -p password .
  5. Entrez use mysql pour sélectionner la base de données MySQL.
  6. Téléchargez le fichier "timezone_YYYYc_posix_sql.zip" (A la place de YYYY, substituez l'année maximale disponible dans cette page comme 2017 ou 2018) à partir de https://dev.mysql.com/downloads/timezones.html .
  7. Extrayez-le et ouvrez le fichier dans un éditeur de texte.
  8. Copiez le contenu et exécutez-le dans l'invite cmd.

Après avoir terminé avec succès, vous devriez être en mesure d'utiliser CONVERT_TZ et d'autres fonctions de fuseau horaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X