Как может ВЫБРАТЬ UTC_TIMESTAMP (), возвращают-10:00 UTC?

Или я глуп, или что-то неправильно здесь.

У меня есть два SQL Server, тот находится на моей локальной машине (местное время +2 GMT), и другой где-то в другом месте (NOW() кажется, возвращает +8 GMT), и я получаю доступ к ним через phpMyAdmin. У меня есть таблица, которая имеет a DATETIME столбец. Я пробую

сохранить текущее время GMT/UTC и затем отобразить его снова, все еще как время GMT/UTC.

Первоначально я сохранил DATE_SUB(NOW(), INTERVAL 8 HOUR) который работал просто великолепно. Однако затем я читал о UTC_TIMESTAMP() и любил его больше, поскольку это было короче и MySQL manual даже сказанный:

"Установка зоны текущего времени не влияет на значения, отображенные функциями, такими как UTC_TIMESTAMP (), или оценивает на ДАТЕ, ВРЕМЯ или столбцы DATETIME".

Так идеальное право? Кроме нет.

Давайте предположим, что Текущий GMT 18.02.2010 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?!)

Я пропускаю что-то?!

7
задан diEcho 3 July 2012 в 08:44
поделиться

1 ответ

Возможно, потому что часы на онлайн-сервере неправильные?

Попробуйте запустить это:

SELECT  @@system_time_zone, NOW(), UTC_TIMESTAMP()

и посмотрите, в какой зоне он возвращается и соответствует ли разница.

12
ответ дан 6 December 2019 в 21:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: