Может ли MySQL преобразовать сохраненное время UTC в местный часовой пояс?
Может ли MySQL преобразовать сохраненное время UTC в местное время: ed напрямую в обычном операторе select?
Допустим, у вас есть некоторые данные с отметкой времени (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`)
)
Тогда когда я
"select value, date from SomeDateTable";
Я, конечно, получаю все даты как в их сохраненной форме UTC.
Но допустим, что я хотел бы, чтобы они были в другом часовом поясе (с DST). Могу ли я добавить магию в запрос на выборку, чтобы получить все даты в выбранном часовом поясе?
"select value, TIMEZONE(date, "Europe/Berlin") from SomeDateTable";
Или я должен сделать это в каком-то другом слое сверху, как в некотором PHP-коде? (похоже, что большинство людей решили эту проблему).
Спасибо Йохан
Если ваша установка MySQL позволяет вам использовать CONVERT_TZ, это очень чистое решение, этот пример показывает, как его использовать.
SELECT CONVERT_TZ( '2010-01-01 12:00', 'UTC', 'Europe/Stockholm' )
Однако я не знаю, если это хороший способ, так как в некоторых установках MySQL отсутствует эта функция, используйте с осторожностью.