No MySQL, você pode converter um valor de data e hora entre um fuso horário para outro usando o
CONVERT_TZ()
função. Esta função aceita 3 argumentos; o valor datetime, o fuso horário original e o fuso horário para converter. Sintaxe e exemplos abaixo.
Sintaxe
Aqui está a sintaxe:
CONVERT_TZ(dt,from_tz,to_tz)
Onde
dt
é a data/hora, from_tz
é o fuso horário original e to_tz
é o fuso horário para o qual converter. Exemplo
Aqui está um exemplo de uso.
SELECT CONVERT_TZ('2020-12-01 01:00:00','+00:00','+08:00') AS Result;
Resultado:
+---------------------+ | Result | +---------------------+ | 2020-12-01 09:00:00 | +---------------------+
Fusos horários nomeados
Você também pode usar fusos horários nomeados, como
'US/Eastern'
, 'Europe/Moscow'
, 'MET'
, etc Para fazer isso, você precisará configurar as tabelas de fuso horário primeiro. O procedimento de instalação do MySQL cria as tabelas de fuso horário, mas não as carrega. Portanto, você precisará preencher essas tabelas primeiro.
Se você tentar usar um fuso horário nomeado com essa função sem primeiro preencher as tabelas de fuso horário, obterá um valor nulo.
SELECT CONVERT_TZ('2020-12-01 01:00:00','Europe/Helsinki','US/Eastern') AS Result;
Resultado:
+--------+ | Result | +--------+ | NULL | +--------+
Observe que, mesmo que você preencha as tabelas de fuso horário, talvez seja necessário atualizá-las periodicamente. Isso ocorre porque as informações podem mudar ocasionalmente. Para obter mais informações sobre isso, consulte MySQL Server Time Zone Support no site de documentação do MySQL.