mysql select convert_tz returns null

mysql select convert_tz returns nullПривет,

Днес се сблъсках с един странен проблем при конвертиране на timezone в MySQL.

Проблемът беше следния : mysql select convert_tz returns null

 

mysql> SELECT CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC');
+-----------------------------------------------------------+
| CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC') |
+-----------------------------------------------------------+
| NULL |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

Това го дава въпреки настроената правилно timezone-а на сървъра :

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM | SYSTEM |
+--------------------+---------------------+
1 row in set (0.00 sec)

Вместо NULL обаче трябва да вади валидна дата и час.

Този проблем се оправя с командата : mysql_tzinfo_to_sql , или накратко така :

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

И вече резултата от селекта изглежда така:

mysql> SELECT CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC');
+-----------------------------------------------------------+
| CONVERT_TZ('2016-11-01 18:00:00', 'Europe/London', 'UTC') |
+-----------------------------------------------------------+
| 2016-11-01 18:00:00 |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

Това е!