тип данных для использования в MySQL для часовых поясов - PullRequest
3 голосов
/ 29 декабря 2011

Я храню дату / время в моей базе данных, которая является UTC. Я работаю над тем, чтобы добавить преобразование, когда пользователь выберет часовой пояс, чтобы он показывал для них местное время. В основном пользователь выбирает из формы:

<select name="DropDownTimezone" id="DropDownTimezone">
   <option value="-12.0">(GMT -12:00) Eniwetok, Kwajalein</option>
   <option value="-11.0">(GMT -11:00) Midway Island, Samoa</option>
   <option value="-10.0">(GMT -10:00) Hawaii</option>
   ...

Я могу сделать значение параметра любым, что захочу, но его легко запомнить, как указано выше. Какой тип данных я бы использовал для MySQL? Это действительно имеет значение в этом случае? Будет ли TINYINT делать? Может быть, использование ENUM было бы хорошей идеей?

Любые предложения будут оценены.

1 Ответ

5 голосов
/ 29 декабря 2011

Предлагаемая схема (сохранение часовых поясов в виде целочисленного смещения от GMT) может завершиться ошибкой в ​​следующих случаях:

  • Индия, которая находится в UTC + 05:30 (не целое числоколичество часов).
  • Кирибати, который находится в UTC + 14:00 (более 12 часов).
  • Различают британское время и время по Гринвичу.(Первый использует летнее время; последний - нет.)
  • Различают некоторые пары стран, которые используют одинаковое смещение по Гринвичу, но переключаются в разное время года.

Для полной поддержки часовых поясов я бы рекомендовал использовать базу данных zoneinfo и хранить часовые пояса в виде строк (например, «America / New_York»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...