Eu sei que isso parece estúpido, mas quando eu uso
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta') AS time
ele produz NULL. Estou usando o MySQL Workbench no Ubuntu 12.04 de 64 bits e funciona em meu outro laptop / sistema operacional (também usando o MySQL Workbench).
mysql
ubuntu-12.04
convert-tz
Mohur
fonte
fonte
Eu encontrei este tópico depois de passar algum tempo tentando descobrir por que, após executar o comando na resposta aceita (que é a mesma no site dev do MySQL), o comando não conseguiu converter entre fusos horários como
Acontece que no OS X existem dois arquivos que causam problemas:
/usr/share/zoneinfo/Factory
e/usr/share/zoneinfo/+VERSION
.A correção ... mover temporariamente esses arquivos para um local diferente, como
/usr/share/zoneinfo/.bak/
permite o comandopara preencher totalmente todas as informações de fuso horário esperadas.
Isso pode ou não ser um bug em minha versão instalada do MySQL:
Também estou operando em
STRICT_MODE
.Em qualquer caso, espero que isso evite algumas dores de cabeça para quem está procurando a solução.
fonte
Além do ambiente Windows, você pode definir o fuso horário por
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Em ambiente 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
(ou seja, C: \ Arquivos de programas \ MySQL \ data \ mysql) `4. Start MySQL server
..Seu trabalho acabou ..
Se ainda assim você está recebendo
NULL
paraCONVERT_TZ
download dessas tabelas de banco de dados e inseri-lo no banco de dados mysql http://www.4shared.com/folder/Toba2qu-/Mysql_timezone.htmlAgora seu problema será resolvido .. :)
fonte
Se você estiver usando o MySql no Windows, terá que carregar os dados de fuso horário no esquema mysql. Aqui está um bom COMO FAZER: http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html
Se você não fizer isso, a função CONVERT_TZ não reconhecerá seu fuso horário de entrada (ou seja, seus exemplos: 'UTC', 'Ásia / Jacarta') e simplesmente retornará NULL.
fonte
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/
fonte
1) No Windows, não há nenhuma pasta de dados agora
C:\Program Files\MySQL\
como nas outras respostas.2) Nesse caso, procure
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql
. Geralmente esta pasta está oculta e você não veráC:\ProgramData\
algumas vezes.3) Altere as configurações na guia Exibir para ver os arquivos e pastas ocultos, conforme explicado aqui https://irch.info/index.php?pg=kb.page&id=133
4) Pare o serviço MySQL procurando por "serviços" no botão Iniciar do Windows.
5) Em seguida, descompacte timezone_2017c_posix.zip e copie os arquivos nele (copie os arquivos diretamente, não copie a pasta inteira) e cole
C:\ProgramData\MySQL\MySQLServer5.x\Data\mysql\
6) Para MySQL 5.7, timezone_2017c_posix.zip fornecerá apenas um arquivo .sql após descompactar e pode não resolver o problema. Então vá em frente e baixe o arquivo zip para 5.6, mesmo se você estiver executando o MySQL 5.7 e copie esses arquivos para
C:\ProgramData\MySQL\MySQL Server 5.x\Data\mysql\
7) Reinicie o servidor MySQL. Para verificar se CONVERT_TZ () está funcionando, execute esta consulta sql.
SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','Asia/Jakarta');
e verifique se há saída não nula.fonte
se você receber o erro
data too long for column 'abbreviation' at row 1
, consulte: https://bugs.mysql.com/bug.php?id=68861a correção seria executar o seguinte
isso adicionará uma linha para desativar o modo mysql e permitir que o mysql insira dados truncados devido a um bug do mysql onde o mysql adicionaria um caractere nulo no final (de acordo com o link acima)
fonte
Estas são as etapas para que funcione se você estiver no Windows e usando o MySQL 5.7.
mysql -u root -p password
.use mysql
para selecionar o banco de dados MySQL.Após a conclusão bem-sucedida, você poderá usar
CONVERT_TZ
outras funções de fuso horário.fonte
No Mac OS Catalina ao usar XAMPP,
Vá para a pasta / Applications / XAMPP / xamppfiles / bin no Terminal e execute o seguinte.
./mysql_tzinfo_to_sql / usr / share / zoneinfo | sed -e "s / Fuso horário local deve ser definido - consulte a página de manual zic / local /" | ./mysql -u root mysql
Isso funcionou para mim.
fonte