Я храню значения даты и времени в формате UTC в MySQL. Я использую CONVERT_TZ, чтобы обработать преобразование часового пояса для запроса / сохранения локальных данных времени в / из UTC в базе данных.
При тестировании я заметил эту странную особенность работы конвертации. Может кто-нибудь объяснить, почему MySQL добавляет 23 секунды при использовании смещения -4: 00, а не при использовании метки эквивалентного часового пояса?
select convert_tz('2009-06-12 01:00:00', 'UTC', '-4:00')
2009-06-11 21:00:23
select convert_tz('2009-06-12 01:00:00', 'UTC', 'US/Eastern')
2009-06-11 21:00:00
Я использую MySQL 5.0.67-community-nt-log на моем ноутбуке с Windows XP. Я выполняю запрос из локально размещенного phpMyAdmin 3.1.5 и вижу его также в своем приложении в PHP 5.2.8.
По сравнению с моей учетной записью Dreamhost оба запроса возвращают правильное время («2009-09-06 21:00:00»). Они запускают MySQL 5.0.45-log в Linux и PHP 5.2.6.
Почему моя собственная установка MySQL имеет такое несоответствие?