Em um servidor, quando eu executo:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 16:54:29 |
+---------------------+
1 row in set (0.00 sec)
Em outro servidor:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2009-05-30 20:01:43 |
+---------------------+
1 row in set (0.00 sec)
ntp
- e veja o que é certo para você!"Respostas:
Eu pensei que isso poderia ser útil:
Existem três locais onde o fuso horário pode ser definido no MySQL:
No arquivo "my.cnf" na seção [mysqld]
variável @@ global.time_zone
Para ver em que valor eles estão definidos:
Para definir um valor para ele, use um dos seguintes:
(Usar fusos horários nomeados como 'Europa / Helsinque' significa que você precisa ter uma tabela de fuso horário devidamente preenchida.)
Lembre-se de que
+02:00
é um deslocamento.Europe/Berlin
é um fuso horário (que possui duas compensações) eCEST
uma hora do relógio que corresponde a um deslocamento específico.variável @@ session.time_zone
Para configurá-lo, use um dos seguintes:
Ambos podem retornar SYSTEM, o que significa que eles usam o fuso horário definido em my.cnf.
Para que os nomes de fuso horário funcionem, você deve configurar suas tabelas de informações de fuso horário: http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Menciono também como preencher essas tabelas nesta resposta .
Para obter o deslocamento do fuso horário atual como
TIME
Ele retornará 02:00:00 se o seu fuso horário for +2: 00.
Para obter o registro de data e hora atual do UNIX:
Para obter a coluna do registro de data e hora como um registro de data e hora do UNIX
Para obter uma coluna de data e hora UTC como um carimbo de data / hora UNIX
Nota: Alterar o fuso horário não alterará a data e hora armazenadas , mas mostrará um diferente para as colunas de carimbo de data / hora existentes, pois elas são armazenadas internamente como carimbos de data / hora UTC e exibidas externamente no fuso horário atual do MySQL.
Fiz uma folha de dicas aqui: O MySQL deve ter seu fuso horário definido como UTC?
fonte
+00:00
não é um fuso horário, é um deslocamento de tempo. O que acontece com relação ao horário de verão? Ele fica em +0 o ano todo?time_zone="+00:00"
o fuso horário usando um deslocamento do UTC, considerando que o valor definido nunca muda e que o UTC não segue o horário de verão, posso assumir que ele permanece o mesmo durante todo o ano.+00:00
parece um deslocamento, então é meio estranho o MySQL escolher isso para representar o UTC em vez de apenas usar a própria string "UTC". Obrigado pela informação.C:\ProgramData\MySQL\MySQL Server x.x\my.ini
Para quem ainda está com esse problema:
Trabalhou para mim. Basta acrescentar
?serverTimezone=UTC
no final.fonte
Asia/Ho_Chi_Minh
vez deUTC
BTW, a questão é mudar o fuso horário do MySQL. Então, veja a resposta do @Timo. Se você tiver problemas com o docker MySQL, adicione o ambiente TZ e ele deverá funcionar.SET time_zone=...
Quando você pode configurar o servidor de fuso horário para MySQL ou PHP:
Lembrar:
Alterar sistema de fuso horário. Exemplo para Ubuntu:
Reinicie o servidor ou você pode reiniciar o Apache 2 e o MySQL:
fonte
Para configurá-lo para a sessão atual, faça:
fonte
SET time_zone = 'America/Boise'
. Obrigado pela resposta, James Skidmore!SET time_zone = 'UTC';
cenário se perde durante a reinicialização do servidorSimplesmente execute isto no seu servidor MySQL:
Onde +8: 00 será o seu fuso horário.
fonte
@@session.time_zone
como descrito em outras respostas é uma rota muito melhor.Este trabalho para mim para um local na Índia:
fonte
Você pode especificar o fuso horário padrão do servidor ao iniciá-lo, consulte http://dev.mysql.com/doc/refman/5.1/en/server-options.html e, especificamente, a
--default-time-zone=timezone
opção Você pode verificar os fusos horários globais e da sessão comdefina um ou ambos com a
SET
instrução, & c; consulte http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html para obter mais detalhes.fonte
Lembre-se de que 'Country / Zone' não está funcionando às vezes ... Esse problema não depende do sistema operacional, da versão MySQL e do hardware - eu o conheço desde o FreeBSD 4 e o Slackware Linux no ano de 2003 até hoje. MySQL da versão 3 até o último tronco de origem. É ímpar, mas acontece. Por exemplo:
E uma declaração como essa deve funcionar:
Mas você tem este problema:
Dê uma olhada na subpasta no diretório de informações da zona e consulte o nome do arquivo ACTUAL para o link simbólico; nesse caso, é EST5EDT. Em seguida, tente esta declaração:
E está realmente funcionando como deveria! :) Lembre-se desse truque; Eu não vi isso documentado nos manuais do MySQL e na documentação oficial. Mas ler a documentação correspondente é algo obrigatório: documentação oficial do fuso horário do MySQL 5.5 - e não se esqueça de carregar dados do fuso horário no seu servidor assim (execute como usuário root!):
Truque número um - deve ser feito exatamente sob o usuário root do MySQL. Pode falhar ou produzir resultados não funcionais, mesmo a partir do usuário que tem acesso total a um banco de dados MySQL - eu mesmo vi a falha.
fonte
Se você estiver usando DOP:
Se você estiver usando o MySQLi:
Mais sobre como formatar o deslocamento aqui: https://www.sitepoint.com/synchronize-php-mysql-timezone-configuration/
fonte
Esta é uma pergunta de 10 anos, mas de qualquer maneira, aqui está o que funcionou para mim. Estou usando o MySQL 8.0 com Hibernate 5 e SpringBoot 4.
Eu tentei a resposta aceita acima, mas não funcionou para mim, o que funcionou para mim é o seguinte:
Se isso ajudar você não se esqueça de votar novamente: D
fonte
Pergunta antiga com mais uma sugestão:
Se você alterou recentemente o fuso horário do sistema operacional, por exemplo, via:
... O MySQL (ou MariaDB) não notará até que você reinicie o serviço db:
(ou)
fonte
Se você estiver usando o MySql Workbench, poderá definir isso abrindo a visualização do administrador e selecionando a guia Avançado. A seção superior é "Localização" e a primeira caixa de seleção deve ser "fuso horário padrão". Marque essa caixa e digite o fuso horário desejado, reinicie o servidor e você deve estar pronto.
fonte
Primeiro, para descobrir qual é o time_zone, você pode consultar
Sua saída deve ser semelhante à seguinte
Então, se você deseja confirmar que está em algum fuso horário, como CDT, em vez de algo como EST, pode verificar a que horas acha que está sua máquina dizendo
Se não é o momento que você deseja, você precisa alterá-lo ... tudo o que você precisa fazer é
SET time_zone = timezone_name
. Verifique se ele está noContinent/City
formato.Se você estiver em um servidor compartilhado porque possui um serviço de hospedagem, consulte estas respostas para alterar o arquivo php.ini ou o arquivo .htaccess.
fonte
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p E
primeiro e depoisSET time_zone = timezone_name
funcionou bem.Você precisa configurar o fuso horário da sua localização. Para seguir o processo abaixo,
abra o MSQLWorkbench e escreva um comando sql simples como este;
E também seu URL pode ser assim;
fonte
Para definir o fuso horário padrão no MariaDB, você deve acessar o arquivo 50-server.cnf .
Então você pode inserir a seguinte entrada na seção mysqld.
Exemplo:
A alteração deve ser feita através do arquivo de configuração, caso contrário, o servidor MariaDB redefinirá as tabelas mysql após uma reinicialização!
fonte
Edite o arquivo de configuração do MySQL
Role e adicione-os à parte inferior. Alterar para o fuso horário relevante
Reinicie o servidor
fonte
No Windows (IIS), para poder SET GLOBAL time_zone = 'Europe / Helsinki' (ou qualquer outro), as tabelas de descrição do MySQL time_zone precisam ser preenchidas primeiro.
Eu os baixei deste link https://dev.mysql.com/downloads/timezones.html
Depois de executar a consulta SQL baixada, consegui definir o time_zone GLOBAL e resolver o problema que eu tinha onde SELECT NOW (); estava retornando GMT em vez de BST.
fonte
No meu caso, a solução foi definir o parâmetro serverTimezone nas configurações avançadas para um valor apropriado (CET para o meu fuso horário).
Enquanto uso o IntelliJ, uso o módulo Banco de Dados. Ao adicionar uma nova conexão ao banco de dados e depois de adicionar todos os parâmetros relevantes na guia Geral, ocorreu um erro no botão "Testar Conexão". Novamente, a solução é definir o parâmetro serverTimezone na guia Avançado.
fonte
Se alguém estiver usando o GoDaddy Shared Hosting, você pode tentar a seguinte solução, funcionou para mim.
Ao iniciar a conexão com o banco de dados, defina o comando time_zone no meu objeto PDO, por exemplo:
Onde "+05: 30" é o fuso horário da Índia. Você pode alterá-lo conforme sua necessidade.
Depois disso; todos os processos do MySQL relacionados à data e hora são definidos com o fuso horário necessário.
Fonte: https://in.godaddy.com/community/cPanel-Hosting/How-to-change-TimeZone-for-MySqL/td-p/31861
fonte