Я знаю, это звучит глупо, но когда я использую
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time
он выводит NULL. Я использую MySQL Workbench в Ubuntu 12.04 64 бит, и он работает на моем другом ноутбуке / ОС (также с использованием MySQL Workbench).
mysql
ubuntu-12.04
convert-tz
мохур
источник
источник
Я нашел этот поток, потратив некоторое время на то, чтобы выяснить, почему после запуска команды в принятом ответе (который аналогичен на сайте разработчиков MySQL) команде не удалось преобразовать часовые пояса, такие как
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','MET') AS time
Оказывается, в OS X есть два файла, которые вызывают проблемы:
/usr/share/zoneinfo/Factory
и/usr/share/zoneinfo/+VERSION
.Исправление ... временное перемещение этих файлов в другое место, например,
/usr/share/zoneinfo/.bak/
позволяет использовать командучтобы полностью заполнить всю ожидаемую информацию о часовом поясе.
Это может быть или не быть ошибкой в моей установленной версии MySQL:
$ mysql --version mysql Ver 14.14 Distrib 5.6.11, for osx10.6 (x86_64) using EditLine wrapper
Я тоже работаю в
STRICT_MODE
.В любом случае, я надеюсь, что это избавит от головной боли тех, кто ищет исправление.
источник
Помимо среды Windows, вы можете установить часовой пояс,
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
В среде 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: \ Program Files \ MySQL \ data \ mysql) `4. Start MySQL server
..Ваша работа окончена ..
Если вы все еще получаете
NULL
дляCONVERT_TZ
Загрузите эти таблицы базы данных и вставьте их в базу данных mysql http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.htmlТеперь ваша проблема будет решена .. :)
источник
Если вы используете MySql в Windows, вам необходимо загрузить данные часового пояса в схему mysql. Вот хороший HOWTO: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
Если вы этого не сделаете, функция CONVERT_TZ не распознает ваш часовой пояс ввода (например, ваши примеры: «UTC», «Азия / Джакарта») и просто вернет NULL.
источник
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/
источник
1) В Windows сейчас нет папки с данными,
C:\Program Files\MySQL\
как в других ответах.2) В таком случае ищите
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql
. Обычно эта папка скрыта, и вы не увидите ееC:\ProgramData\
несколько раз.3) Измените настройки на вкладке «Просмотр», чтобы увидеть скрытые файлы и папки, как описано здесь https://irch.info/index.php?pg=kb.page&id=133.
4) Остановите службу MySQL, выполнив поиск «services» в кнопке «Пуск» Windows.
5) Затем разархивируйте файл timezone_2017c_posix.zip, а затем скопируйте файлы в него (копируйте файлы напрямую, не копируйте всю папку) и вставьте
C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\
6) Для MySQL 5.7 timezone_2017c_posix.zip просто предоставит файл .sql после распаковки, и это может не решить проблему. Так что скачайте zip-файл для 5.6, даже если вы используете MySQL 5.7, и скопируйте эти файлы в
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\
7) Перезагрузите сервер MySQL. Чтобы проверить, работает ли CONVERT_TZ (), запустите этот sql-запрос.
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta');
и проверьте ненулевой вывод.источник
если вы получили сообщение об ошибке,
data too long for column 'abbreviation' at row 1
см .: https://bugs.mysql.com/bug.php?id=68861исправление будет заключаться в запуске следующего
это добавит строку для отключения режима mysql и позволит mysql вставлять усеченные данные. Это произошло из-за ошибки mysql, когда mysql добавлял нулевой символ в конце (согласно приведенной выше ссылке)
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql (if the above gives error "data too long for column 'abbreviation' at row 1") mysql_tzinfo_to_sql /usr/share/zoneinfo > /tmp/zut.sql echo "SET SESSION SQL_MODE = '';" > /tmp/mysql_tzinfo_to.sql cat /tmp/zut.sql >> /tmp/mysql_tzinfo_to.sql mysql --defaults-file=/etc/mysql/my.cnf --user=verifiedscratch -p mysql < /tmp/mysql_tzinfo_to.sql
источник
Вот шаги, чтобы заставить его работать, если вы работаете в Windows и используете MySQL 5.7.
mysql -u root -p password
.use mysql
чтобы выбрать базу данных MySQL.После успешного завершения вы сможете использовать
CONVERT_TZ
и другие функции часового пояса.источник
В Mac OS Catalina при использовании XAMPP
Перейдите в папку / Applications / XAMPP / xamppfiles / bin в Терминале, затем запустите следующее.
./mysql_tzinfo_to_sql / usr / share / zoneinfo | sed -e "s / Должен быть установлен местный часовой пояс - см. страницу руководства zic / local /" | ./mysql -u корень mysql
Это сработало для меня.
источник