Je sais que cela semble stupide, mais quand j'utilise
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time
il sort NULL. J'utilise MySQL Workbench dans Ubuntu 12.04 64 bits, et cela fonctionne dans mon autre ordinateur portable / os (également en utilisant MySQL Workbench).
mysql
ubuntu-12.04
convert-tz
mohur
la source
la source
J'ai trouvé ce fil 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 n'a pas pu convertir entre les fuseaux horaires tels que
Il s'avère que sur OS X, deux fichiers posent des problèmes:
/usr/share/zoneinfo/Factory
et/usr/share/zoneinfo/+VERSION
.Le correctif ... déplacer temporairement ces fichiers vers un emplacement différent tel que
/usr/share/zoneinfo/.bak/
permet la commandepour renseigner entièrement toutes les informations de fuseau horaire attendues.
Cela peut ou non être un bogue dans ma version installée de MySQL:
J'opère également en
STRICT_MODE
.Dans tous les cas, j'espère que cela évitera quelques maux de tête à quiconque recherche le correctif.
la source
En dehors de l'environnement Windows, vous pouvez définir le fuseau horaire en
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Dans l' environnement Windows ,
1. download Time zone description tables from
http://dev.mysql.com/downloads/timezones.html2. Stop MySQL server
3. Put then inside Mysql installation package
(c.-à-d. C: \ Program Files \ MySQL \ data \ mysql) `4. Start MySQL server
.. Votre travail est terminé.
Si encore vous obtenez
NULL
pourCONVERT_TZ
télécharger ces tables de base de données et l' insérer dans la base de données MySQL http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.htmlMaintenant, votre problème sera résolu .. :)
la source
Si vous utilisez MySql sous Windows, vous devez charger les données de fuseau horaire dans le schéma mysql. Voici un bon HOWTO: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
Si vous ne le faites pas, la fonction CONVERT_TZ ne reconnaîtra pas votre fuseau horaire d'entrée (c'est-à-dire vos exemples: 'UTC', 'Asia / Jakarta'), et retournera simplement NULL.
la source
MAMP PRO
Terminal
cd /usr/share/zoneinfo/
sudo mv +VERSION ~/Desktop
cd /applications/MAMP/Library/bin
sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/
la source
1) Sous Windows, il n'y a aucun dossier de données maintenant
C:\Program Files\MySQL\
comme dans les autres réponses.2) Dans ce cas, recherchez
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql
. Généralement, ce dossier est caché et vous ne le verrez pasC:\ProgramData\
parfois.3) Modifiez les paramètres dans l'onglet Affichage pour voir les fichiers et dossiers cachés comme expliqué ici https://irch.info/index.php?pg=kb.page&id=133
4) Arrêtez le service MySQL en recherchant "services" dans le bouton Démarrer de Windows.
5) Ensuite, décompressez le timezone_2017c_posix.zip, puis copiez-y les fichiers (copiez les fichiers directement, ne copiez pas tout le dossier lui-même), et collez-le
C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\
6) Pour MySQL 5.7, timezone_2017c_posix.zip donnera juste un fichier .sql après la décompression et cela ne résoudra pas le problème. Alors allez-y et téléchargez le fichier zip pour 5.6 même si vous exécutez MySQL 5.7 et copiez ces fichiers dans
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\
7) Redémarrez le serveur MySQL. Pour vérifier si CONVERT_TZ () fonctionne, exécutez cette requête SQL.
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta');
et vérifiez la sortie non nulle.la source
si vous obtenez l'erreur,
data too long for column 'abbreviation' at row 1
consultez: https://bugs.mysql.com/bug.php?id=68861le correctif serait d'exécuter ce qui suit
cela ajoutera une ligne pour désactiver le mode mysql et permettre à mysql d'insérer des données tronquées c'était à cause d'un bogue mysql où mysql ajouterait un caractère nul à la fin (selon le lien ci-dessus)
la source
Voici les étapes à suivre pour que cela fonctionne si vous êtes sous Windows et que vous utilisez MySQL 5.7.
mysql -u root -p password
.use mysql
pour sélectionner la base de données MySQL.En cas de réussite, vous devriez pouvoir utiliser
CONVERT_TZ
et d'autres fonctions de fuseau horaire.la source
Sur Mac OS Catalina lors de l'utilisation de XAMPP,
Accédez au dossier / Applications / XAMPP / xamppfiles / bin dans Terminal puis exécutez ce qui suit.
./mysql_tzinfo_to_sql / usr / share / zoneinfo | sed -e "s / Le fuseau horaire local doit être défini - voir la page de manuel zic / local /" | ./mysql -u racine mysql
Cela a fonctionné pour moi.
la source