Либо я тупой, либо здесь что-то не так.
У меня есть два SQL-сервера, один находится на моей локальной машине (местное время + 2 по Гринвичу ), а другой где-то еще (NOW()
, кажется, возвращает + 8 по Гринвичу ) и я получаю к нему доступ через phpMyAdmin. У меня есть таблица, в которой есть DATETIME
столбец. Я пытаюсь
, чтобы сохранить текущее время по Гринвичу / UTC и затем снова отобразить его, все еще как время по Гринвичу / UTC.
Первоначально я хранил DATE_SUB(NOW(), INTERVAL 8 HOUR)
, который работал просто отлично. Однако потом я прочитал о UTC_TIMESTAMP()
, и он мне понравился больше, так как он был короче, а MySQL manual
даже сказал:
"Текущая настройка часового пояса не влияет на значения, отображаемые функциями
например, UTC_TIMESTAMP () или значения в столбцах DATE, TIME или DATETIME. "
Так прекрасно, верно? Кроме №
Давайте предположим, что текущим по Гринвичу является 2010-02-18 17: 18: 17 (я даже дважды проверил это с кем-то в Британии).
На моем локальном (+2) сервере я получаю следующие результаты для следующих запросов:
SELECT NOW(); 2010-02-18 19:18:17
SELECT UTC_TIMESTAMP(); 2010-02-18 17:18:17
На мой онлайн-сервер Я получаю:
SELECT NOW(); 2010-02-19 01:18:17
SELECT UTC_TIMESTAMP(); 2010-02-19 07:18:17 (WHY?!)
Я что-то упустил?!