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