O MySQL pode converter uma hora UTC armazenada em fuso horário local?
O MySQL pode converter um horário UTC armazenado no fuso horário local diretamente em uma instrução normal de seleção?
Digamos que você tenha alguns dados com um carimbo de data / hora (UTC).
CREATE TABLE `SomeDateTable` (
`id` int(11) NOT NULL auto_increment,
`value` float NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
)
Então quando eu
"select value, date from SomeDateTable";
Obviamente, recebo todas as datas como em seu formulário UTC armazenado.
Mas digamos que eu gostaria de tê-los em outro fuso horário (com horário de verão), posso adicionar um pouco de mágica à consulta de seleção para recuperar todas as datas no fuso horário selecionado?
"select value, TIMEZONE(date, "Europe/Berlin") from SomeDateTable";
Ou devo fazer isso em alguma outra camada no topo, como em algum código php? (parece que a maioria das pessoas resolveu esse problema).
Obrigado Johan
Se sua instalação do MySQL permite que você use CONVERT_TZ, é uma solução muito limpa, este exemplo mostra como usá-lo.
SELECT CONVERT_TZ( '2010-01-01 12:00', 'UTC', 'Europe/Stockholm' )
No entanto, não sei se essa é uma boa maneira, pois algumas instalações do MySQL estão sem essa função, use com cuidado.