Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como faço para definir o fuso horário do MySQL?


Achei que isso poderia ser útil:

Existem três lugares onde o fuso horário pode ser definido no MySQL:

No arquivo "my.cnf" na seção [mysqld]

default-time-zone='+00:00'

@@global.time_zone variável


Para ver qual valor eles estão definidos:
SELECT @@global.time_zone;

Para definir um valor para ele, use qualquer um:
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';

(Usar fusos horários nomeados como 'Europe/Helsinki' significa que você precisa ter uma tabela de fuso horário preenchida corretamente.)

Lembre-se de que +02:00 é um deslocamento. Europe/Berlin é um fuso horário (que tem dois deslocamentos) e CEST é uma hora do relógio que corresponde a um deslocamento específico.

@@session.time_zone variável

SELECT @@session.time_zone;

Para configurá-lo, use qualquer um:
SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";

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 que precisam ser preenchidas:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html . Também mencionei como preencher essas tabelas esta resposta .

Para obter o deslocamento de fuso horário atual como TIME

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

Ele retornará 02:00:00 se seu fuso horário for +2:00.

Para obter o timestamp atual do UNIX:

SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP(NOW());

Para obter a coluna timestamp como um timestamp UNIX

SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`

Para obter uma coluna de data e hora UTC como um carimbo de data/hora UNIX

SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`

Observação:alterar o fuso horário não alterará a data/hora ou o carimbo de data/hora armazenados , mas mostrará uma data e hora diferente para 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.

Eu fiz uma folha de dicas aqui:O MySQL deve ter seu fuso horário definido como UTC?