convert tz devuelve null


Sé que esto suena estúpido, pero cuando uso

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time

Produce NULL. Estoy usando MySQL Workbench en Ubuntu 12.04 64 bit, y funciona en mi otra laptop / os (también usando MySQL Workbench).

Author: Hannele, 2013-01-22

8 answers

Esto sucederá si no ha cargado la tabla de zonas horarias en mysql.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
 134
Author: Barmar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-22 08:37:38

Encontré este hilo después de pasar algún tiempo tratando de averiguar por qué después de ejecutar el comando en la respuesta aceptada (que es lo mismo en el sitio de desarrollo de MySQL) el comando no pudo convertir entre zonas horarias como

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','MET') AS time

Resulta que en OS X hay dos archivos que causan problemas: /usr/share/zoneinfo/Factory y /usr/share/zoneinfo/+VERSION.

La solución... mover temporalmente estos archivos a una ubicación diferente como /usr/share/zoneinfo/.bak/ permite el comando

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

Para completar todo lo esperado información de zona horaria.

Esto puede ser o no un error en mi versión instalada de MySQL:

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.11, for osx10.6 (x86_64) using  EditLine wrapper

También estoy operando en STRICT_MODE.

En cualquier caso, espero que esto ahorre algunos dolores de cabeza para cualquiera que busque la solución.

 23
Author: Jim Schubert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-31 23:44:26

Aparte del entorno Windows, puede establecer la zona horaria mediante

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

En entorno Windows ,

1. download Time zone description tables from http://dev.mysql.com/downloads/timezones.html

2. Stop MySQL server

3. Put then inside Mysql installation package (ie. C:\Program Files \ MySQL \ data \ mysql) '

4. Start MySQL server

..Tu trabajo ha terminado..

Si todavía está recibiendo NULL para CONVERT_TZ Descargue estas tablas de base de datos e insértelas en la base de datos mysql http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.html

Ahora tu problema será resuelto.. :)

 11
Author: Rakesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-15 09:10:45

Si está utilizando MySQL en Windows, debe cargar los datos de la zona horaria en el esquema mysql. Aquí hay un buen CÓMO: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html

Si no hace esto, la función CONVERT_TZ no reconocerá su zona horaria de entrada (es decir, sus ejemplos: 'UTC','Asia/Jakarta'), y simplemente devolverá NULL.

 2
Author: Domenic D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-27 03:28:51
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Si obtienes el error data too long for column 'abbreviation' at row 1 entonces vea: https://bugs.mysql.com/bug.php?id=68861

La solución sería ejecutar lo siguiente

Esto agregará una línea para deshabilitar el modo mysql y permitir que mysql inserte datos truncados esto se debió a un error de mysql donde mysql agregaba un carácter nulo al final (de acuerdo con el enlace anterior)

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
 1
Author: Timo Huovinen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-23 14:07:05

1) En Windows, no hay ninguna carpeta de datos ahora en C:\Program Files\MySQL\ como en otras respuestas.

2) En ese caso, busque C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql. Generalmente esta carpeta oculta y no verá C:\ProgramData\ algunas veces.

3) Cambie la configuración en la pestaña Ver para ver los archivos y carpetas ocultos como se explica aquí https://irch.info/index.php?pg=kb.page&id=133

4) Detenga el servicio MySQL buscando "servicios" en el botón de inicio de Windows.

5) Luego descomprima el timezone_2017c_posix.Postal y luego copie los archivos en él (copie los archivos directamente, no copie toda la carpeta en sí), y pegue C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\

6) Para MySQL 5.7, timezone_2017c_posix.zip sólo dará una .archivo sql después de descomprimir y puede que no resuelva el problema. Así que siga adelante y descargue el archivo zip para 5.6 incluso si está ejecutando MySQL 5.7 y copie esos archivos a C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\

7) Reinicie el servidor MySQL. Para comprobar si CONVERT_TZ () está funcionando, ejecute esta consulta sql.

SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta'); y comprobar si no es nulo salida.

 1
Author: shanu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-12 23:08:28

Estos son los pasos para hacer que funcione si estás en Windows y usando MySQL 5.7.

  1. Haga clic derecho en Mi Computadora/Computadora/Esta PC o cualquiera que sea el nombre en su sistema operativo y elija Propiedades.
  2. Elija "Configuración avanzada del sistema" en el panel izquierdo.
  3. Elija "Variables ambientales", ingrese el nombre completo de la ruta de acceso de su directorio bin MySQL (generalmente estará en, C:\Program Files \ MySQL \ MySQL Server 5.7 \ bin).
  4. Abra cmd prompt, ingrese en mysql usando mysql -u root -p password.
  5. Introduzca use mysql para seleccionar la base de datos MySQL.
  6. Descargue el archivo "timezone_YYYYc_posix_sql.zip " (En lugar de YYYY, sustitúyase el año máximo disponible en esa página, como 2017 o 2018) de https://dev.mysql.com/downloads/timezones.html .
  7. Extráigalo y abra el archivo en el editor de texto.
  8. Copie el contenido y ejecútelo en el indicador cmd.

Al completarse con éxito, debería poder usar CONVERT_TZ y otras funciones de zona horaria.

 1
Author: Stranger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-24 12:22:37

MAMP PRO

  1. Abierto Terminal
  2. cd /usr/share/zoneinfo/
  3. sudo mv +VERSION ~/Desktop
  4. cd /applications/MAMP/Library/bin
  5. sudo ./mysql_tzinfo_to_sql /usr/share/zoneinfo | ./mysql -p -u root mysql
  6. sudo mv ~/Desktop/+VERSION /usr/share/zoneinfo/
 0
Author: Jaseem Abbas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-14 05:44:23