Какой часовой пояс выполняет MySQL NOW()

Использует ли MySQL NOW() системный часовой пояс или какой-то стандарт, например GMT или UTC?

Ответы

Ответ 1

В текущем часовом поясе. Из 5.1 docs:

Возвращает текущую дату и время как значение в "ГГГГ-ММ-ДД ЧЧ: ММ: СС" или YYYYMMDDHHMMSS.uuuuuu формат, в зависимости от того, является ли функция используется в строковом или числовом контексте. Значение выражается в текущем часовой пояс.

Теперь "текущий часовой пояс" может означать разные вещи:

  • Часовой пояс системы
  • Часовой пояс, указанный для сервера MySQL вообще
  • Часовой пояс, связанный с подключением

Более подробная информация представлена ​​в 5.1 документации часового пояса.

(Документы 5.4 выглядят одинаково для этих битов. Очевидно, проконсультируйтесь с документами для версии, в которой вы работаете, для получения максимально возможной информации.)

Ответ 2

Per документы, правила сложны, но в основном сводятся к "текущему часовому поясу сеанса" (который по умолчанию относится к системному часовому поясу):

Текущее значение часового пояса сеанса влияет на отображение и хранение времени значения, чувствительные к зоне. Эта включает значения, отображаемые таких как NOW() или CURTIME(), и значения, хранящиеся и извлеченные из столбцов TIMESTAMP. Значения для Столбцы TIMESTAMP преобразуются из текущий часовой пояс для UTC для хранения, а от UTC до текущего часовой пояс для извлечения.

Конечно, вы можете использовать UTC_TIMESTAMP(), если вам нужен UTC специально.

Ответ 3

Насколько я знаю, системные часы возвращаются. Проверьте системный часовой пояс. Я подключаю MySQL локально (например, из PHP), что временные зоны не будут иметь значения для MySQL, я предпочитаю обрабатывать их в PHP.