Ruby convert_tz с использованием MariaDB возвращает ноль

При регулярном выполнении:

select convert_tz(now(), "UTC", "Europe/London")

непосредственно на сервере MariaDB, он будет производить:

+-------------------------------------------+
| convert_tz(now(), "UTC", "Europe/London") |
+-------------------------------------------+
| 2013-03-07 16:01:32                       |
+-------------------------------------------+

Но если сделать это через ruby ​​1.8.7 или 1.9.3 width:

q = 'select convert_tz(now(), "UTC", "Europe/London")'
ActiveRecord::Base.connection.select_all(q)

это произведет:

"convert_tz(now(), \"UTC\", \"Europe/London\")" => nil

Сделайте то же самое с настройкой MySQL:

q = 'select convert_tz(now(), "UTC", "Europe/London")'
ActiveRecord::Base.connection.select_all(q)

результаты в:

"convert_tz(now(), \"UTC\", \"Europe/London\")" => "2013-03-07 16:05:14"

Теперь протестировано в MySQLWorkbench, и там происходит тот же плохой результат, вместо преобразованного времени возвращается null.

Так что, я думаю, это что-то в MariaDB или?

2 ответа

Решение

Обновление до 5.5.29-MariaDB решило проблему, поэтому, я думаю, это было связано с 5.5.28.

Скорее всего, вам не хватает информации о часовом поясе. Вы можете создать это с помощью mysql_tzinfo_to_sql утилиту или загрузку таблиц с сайта разработчика mysql.

Если вы работаете на Mac или Linux, то, вероятно, вам подойдет следующее (возможно, придется обновить местоположение вашей zoneinfo)

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -Dmysql
Другие вопросы по тегам