Какой часовой пояс выполняет 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.