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

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

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

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

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

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

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

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

Solutions Collecting From Web of "Правильный способ хранения часового пояса в базе данных?"

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

Хорошо, я буду. 🙂

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

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

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

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