mysql unix_timestamp неправильный часовой пояс

Возникли проблемы с функцией UNIX_TIMESTAMP в MySQL.

Настройка: я делаю сайт WordPress на моей локальной машине с Windows и периодически загружаю свои обновления на сервер Ubuntu (page.ly). Существует фрагмент кода, который извлекает столбец datetime из базы данных mysql. Проблема в том, что полученное время правильно на моем локальном компьютере с Windows, но неверно на сервере Ubuntu.

Что я знаю до сих пор, я выполнил несколько запросов в обоих местах, чтобы попытаться воспроизвести проблему.

$wpdb->get_row("SELECT UNIX_TIMESTAMP('2012-07-27 22:15:00') 
FROM {$wpdb->posts}"))

это производит правильное время моей локальной машины (1343427300), но неправильно на Ubuntu (1343445300 на 5 часов вперед. мой местный часовой пояс Америка /New_York.).

$wpdb->get_row("SELECT UNIX_TIMESTAMP('2012-07-27 22:15:00')"))

это производит правильное время на обеих машинах. Это похоже на то, как только я связываю свой выбор с таблицей, с любой таблицей в базе данных, время получает смещение часового пояса + смещение летнего времени. Я проверил смещение часового пояса на обеих машинах. они оба 0. Я вроде застрял здесь. ценю любую помощь.

1 ответ

Решение

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

UNIX_TIMESTAMP возвращает время UTC, что объясняет разницу в 5 часов, которую вы получаете

Возможно, вы захотите использовать CONVERT_TZ для времени со смещением -05,00 (восток), чтобы получить правильный TIMESTAMP.

Другие вопросы по тегам