Может ли 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 отсутствует эта функция, используйте с осторожностью.

Ответы на вопрос(5)

Ваш ответ на вопрос