Ich weiß, das klingt dumm, aber wenn ich benutze
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time
es gibt NULL aus. Ich verwende MySQL Workbench in Ubuntu 12.04 64-Bit und es funktioniert in meinem anderen Laptop / Betriebssystem (auch mit MySQL Workbench).
mysql
ubuntu-12.04
convert-tz
Mohur
quelle
quelle
Ich fand diesen Thread, nachdem ich einige Zeit damit verbracht hatte herauszufinden, warum der Befehl nach dem Ausführen des Befehls in der akzeptierten Antwort (die auf der Dev-Site von MySQL identisch ist) nicht zwischen Zeitzonen wie z
Es stellt sich heraus, dass unter OS X zwei Dateien Probleme verursachen:
/usr/share/zoneinfo/Factory
und/usr/share/zoneinfo/+VERSION
.Das Update ... verschiebt diese Dateien vorübergehend an einen anderen Speicherort, z. B.
/usr/share/zoneinfo/.bak/
ermöglicht den Befehlum alle erwarteten Zeitzoneninformationen vollständig auszufüllen.
Dies kann ein Fehler in meiner installierten Version von MySQL sein oder auch nicht:
Ich bin auch in tätig
STRICT_MODE
.Auf jeden Fall hoffe ich, dass dies ein paar Kopfschmerzen für jeden erspart, der nach dem Fix sucht.
quelle
Abgesehen von der Windows-Umgebung können Sie die Zeitzone nach festlegen
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
In der Windows- Umgebung
1. download Time zone description tables from
http://dev.mysql.com/downloads/timezones.html2. Stop MySQL server
3. Put then inside Mysql installation package
(dh C: \ Programme \ MySQL \ data \ mysql) `4. Start MySQL server
..Ihre Arbeit ist beendet ..
Wenn Sie immer noch
NULL
zumCONVERT_TZ
Herunterladen dieser Datenbanktabellen und Einfügen in die MySQL-Datenbank http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.htmlJetzt wird dein Problem gelöst .. :)
quelle
Wenn Sie MySQL unter Windows verwenden, müssen Sie die Zeitzonendaten in das MySQL-Schema laden. Hier ist ein gutes HOWTO: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
Wenn Sie dies nicht tun, erkennt die Funktion CONVERT_TZ Ihre Eingabezeitzone nicht (dh Ihre Beispiele: 'UTC', 'Asia / Jakarta') und gibt einfach NULL zurück.
quelle
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/
quelle
1) In Windows befindet sich derzeit kein Datenordner
C:\Program Files\MySQL\
wie in anderen Antworten.2) Suchen Sie in diesem Fall nach
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql
. Im Allgemeinen ist dieser Ordner ausgeblendet und wirdC:\ProgramData\
manchmal nicht angezeigt .3) Ändern Sie die Registerkarte Einstellungen in Ansicht, um ausgeblendete Dateien und Ordner anzuzeigen, wie hier erläutert: https://irch.info/index.php?pg=kb.page&id=133
4) Beenden Sie den MySQL-Dienst, indem Sie auf der Windows-Schaltfläche Start nach "Dienste" suchen.
5) Entpacken Sie dann die Datei timezone_2017c_posix.zip und kopieren Sie die darin enthaltenen Dateien (kopieren Sie die Dateien direkt, kopieren Sie nicht den gesamten Ordner selbst) und fügen Sie sie ein
C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\
6) Für MySQL 5.7 gibt timezone_2017c_posix.zip nach dem Entpacken nur eine .sql-Datei aus und kann das Problem möglicherweise nicht lösen. Laden Sie also die Zip-Datei für 5.6 herunter, auch wenn Sie MySQL 5.7 ausführen, und kopieren Sie diese Dateien nach
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\
7) Starten Sie den MySQL-Server neu. Führen Sie diese SQL-Abfrage aus, um zu überprüfen, ob CONVERT_TZ () funktioniert.
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta');
und auf Nicht-Null-Ausgabe prüfen.quelle
Wenn Sie den Fehler erhalten,
data too long for column 'abbreviation' at row 1
lesen Sie: https://bugs.mysql.com/bug.php?id=68861Die Lösung wäre, Folgendes auszuführen
Dadurch wird eine Zeile hinzugefügt, um den MySQL-Modus zu deaktivieren und MySQL zu ermöglichen, abgeschnittene Daten einzufügen. Dies lag an einem MySQL-Fehler, bei dem MySQL am Ende ein Nullzeichen hinzufügte (gemäß dem obigen Link).
quelle
Dies sind die Schritte, damit es funktioniert, wenn Sie sich in Windows befinden und MySQL 5.7 verwenden.
mysql -u root -p password
.use mysql
, um die MySQL-Datenbank auszuwählen.Nach erfolgreichem Abschluss sollten Sie in der Lage sein,
CONVERT_TZ
andere Zeitzonenfunktionen zu verwenden.quelle
Unter Mac OS Catalina bei Verwendung von XAMPP
Gehen Sie im Terminal zum Ordner / Applications / XAMPP / xamppfiles / bin und führen Sie die folgenden Schritte aus.
./mysql_tzinfo_to_sql / usr / share / zoneinfo | sed -e "s / Lokale Zeitzone muss eingestellt sein - siehe zic Handbuchseite / local /" | ./mysql -u root mysql
Das hat bei mir funktioniert.
quelle