Как изменить часовой пояс сервера, не затрагивая уже вставленные данные?

#php #mysql #amazon-web-services #server-administration

#php #mysql #amazon-веб-сервисы #сервер-администрирование

Вопрос:

У меня есть PHP-проект с базой данных Mysql. Проблема в том, что данные, связанные со временем, отображаются неправильно в соответствии с моими требованиями.

Я хочу, чтобы для часового пояса было установлено значение «Часовой пояс Порт-Луи, Маврикий GMT 04:00».

Как обновить часовой пояс, чтобы все данные в базе данных отображали Mauritius часовой пояс? И где обновить часовой пояс?

И если я изменю часовой пояс, будут ли автоматически обновлены уже вставленные данные? Или еще как обновить часовые пояса каждой записи в базе данных?

Комментарии:

1. Зависит от типа данных столбца таблицы, в котором хранятся значения.

2. Часовой пояс сервера изменять не следует. Измените часовой пояс в .htaccess, добавив: php_value date.часовой пояс «Индийский / Маврикий» или проверьте здесь для часовых поясов: php.net/manual/en/timezones.php

Ответ №1:

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

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

Также, пожалуйста, обратите внимание, что преобразования времени часто выполняются SQL-клиентом на основе локали компьютера, на котором запущен SQL-клиент. Это часто может привести к путанице, поскольку время, отображаемое в выходных данных в SQL-клиенте, фактически не соответствует времени, хранящемуся в столбцах. (Хороший способ проверить это — преобразовать поле в текстовое поле, чтобы увидеть «необработанное» значение в поле без его преобразования SQL-клиентом.)

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

Ответ №2:

у вас есть 3 решения:

  • вы можете изменить конфигурацию сервера, если у вас есть выделенный сервер.
  • измените себя на уровне вашего приложения с помощью date_default_timezone_set
  • измените себя на глобальном уровне вашей конфигурации php в php.ini

Комментарии:

1. если я выберу 1-й вариант, будут ли уже вставленные данные БД автоматически обновлять свои данные, связанные с датой и временем?