Подтвердить что ты не робот

Правильный способ хранения часового пояса в базе данных?

Позвольте мне объяснить: я не спрашиваю о правильном способе хранения определенного часового пояса datetime в базе данных. Я говорю о самих часовых поясах. ДЛЯ ПРИМЕРА:

У меня есть таблица MySQL с именем "users". Теперь, в этой таблице, я хочу иметь столбец, который содержит часовой пояс, где бы пользователь ни находился (это предоставлено пользователем, он будет выбран из списка). Я работаю с PHP, у которого есть список таких строк:

Список часовых поясов для Америки

Теперь очевидным решением (по крайней мере для меня) было бы создать столбец VARCHAR в таблице "users", а затем сохранить строку часового пояса, используемую PHP в указанном столбце.

Теперь, когда я думаю об этом, я предполагаю, что я всегда буду использовать PHP для взаимодействия с этой таблицей базы данных, которая, хотя и сейчас, может быть не так в будущем. И (исправьте меня, если я ошибаюсь). Временные строки PHP, вероятно, не работают для других языков программирования, возможно, другие языки имеют свои собственные "константы" для обработки часовых поясов.

Как бы вы приблизились к сохранению предпочтения часового пояса пользователя в столбце базы данных? Любые идеи, безусловно, оценены.

Примечание. Полезная вещь о часовых поясах PHP заключается в том, что даже если DST действует, они автоматически принимают это во внимание, что является удивительным. Таким образом, вы можете видеть мой интерес к использованию их вместо того, чтобы просто хранить числовое смещение.

4b9b3361

Ответ 1

И (исправьте меня, если я ошибаюсь) Строки временных рядов PHP, вероятно, не работают для других языков программирования

Хорошо, буду.:)

PHP реализует базу данных IANA/Olson/TZDB/ZoneInfo (много имен для одного и того же). Это самое близкое к отраслевому стандарту, и оно реализовано практически во всех языках программирования и платформе.

Единственная ОС, которая ее не поддерживает, - это Microsoft Windows, поскольку Microsoft поддерживает собственную базу данных часового пояса. Так что для платформ, ориентированных на Windows, например .Net, есть библиотеки, которые вы должны использовать, если хотите поддержку этого стиля часового пояса.

Подробнее читайте в wiki часового пояса или на Wikipedia.

Итак, да, вы просто сохраняете строку идентификатора часового пояса как varchar. Это лучшее, что нужно сделать.