convert_tz mysql
convert_tz devuelve nulo (8)
1) En Windows, ahora no hay ninguna carpeta de datos en C:/Program Files/MySQL/
como en otras respuestas.
2) En ese caso, busque C:/ProgramData/MySQL/MySQL Server 5.x/Data/mysql
. En general esta carpeta está 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) A continuación, descomprima timezone_2017c_posix.zip y luego copie los archivos en él (copie los archivos directamente, no copie la carpeta completa) y péguelo en C:/ProgramData/MySQL/MySQLServer5.x/Data/mysql/
6) Para MySQL 5.7, timezone_2017c_posix.zip solo dará un archivo .sql después de descomprimir y puede que no resuelva el problema. Así que adelante y descargue el archivo zip para 5.6 incluso si está ejecutando MySQL 5.7 y copie esos archivos en C:/ProgramData/MySQL/MySQL Server 5.x/Data/mysql/
7) Reinicia el servidor MySQL. Para verificar si CONVERT_TZ () está funcionando, ejecute esta consulta SQL.
SELECT CONVERT_TZ(''2004-01-01 12:00:00'',''UTC'',''Asia/Jakarta'');
y verifique la salida no nula.
Sé que esto suena estúpido, pero cuando uso
SELECT CONVERT_TZ(''2004-01-01 12:00:00'',''UTC'',''Asia/Jakarta'') AS time
Emite NULL. Estoy usando MySQL Workbench en Ubuntu 12.04 64 bit, y funciona en mi otra laptop / os (también usando MySQL Workbench).
Además del entorno de Windows, puede establecer la Zona horaria
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
En el entorno de 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
(es decir, C: / Program Files / MySQL / data / mysql) `
4. Start MySQL server
.. Tu trabajo ha terminado ..
Si todavía está obteniendo NULL
para CONVERT_TZ
descargue estas tablas de la base de datos e insértelas en la base de datos de MySQL http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.html
Ahora tu problema será resuelto ... :)
Encontré este hilo después de pasar algún tiempo tratando de descubrir por qué después de ejecutar el comando en la respuesta aceptada (que es la misma en el sitio dev 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 completamente toda la información de la zona horaria esperada.
Esto puede o no ser un error en mi versión de MySQL instalada:
$ 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 a cualquiera que busque la solución.
Esto sucederá si no ha cargado la tabla de zona horaria en mysql.
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Estos son los pasos para hacerlo funcionar si está en Windows y está usando MySQL 5.7.
- Haga clic derecho en Mi PC / Computadora / Esta PC o cualquiera que sea el nombre en su SO y elija Propiedades.
- Elija "Configuración avanzada del sistema" en el panel izquierdo.
- Elija "Variables ambientales", ingrese la ruta completa de su directorio bin MySQL (generalmente estará en, C: / Archivos de programa / MySQL / MySQL Server 5.7 / bin).
- Abra el indicador de cmd, ingrese en mysql usando
mysql -u root -p password
. - Ingrese
use mysql
para seleccionar la base de datos MySQL. - Descargue el archivo "timezone_YYYYc_posix_sql.zip" (en lugar de YYYY, sustituya el año máximo disponible en esa página, como 2017 o 2018) de https://dev.mysql.com/downloads/timezones.html .
- Extraelo y abre el archivo en el editor de texto.
- Copia los contenidos y ejecuta en el prompt cmd.
Al finalizar con éxito, debe poder usar CONVERT_TZ
y otras funciones de zona horaria.
Si está utilizando MySql en Windows, debe cargar los datos de la zona horaria en el esquema de mysql. Aquí hay un buen CÓMO: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
Si no lo hace, la función CONVERT_TZ no reconocerá su zona horaria de entrada (es decir, sus ejemplos: ''UTC'', ''Asia / Yakarta''), y simplemente devolverá NULL.
MAMP PRO
-
Terminal
abierto -
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/
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
si obtiene los data too long for column ''abbreviation'' at row 1
error data too long for column ''abbreviation'' at row 1
, consulte: 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 a mysql insertar datos truncados, esto fue debido a un error mysql donde mysql agregaría un carácter nulo al final (de acuerdo con el enlace de arriba)
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