Мы хотим начать сбор часовых поясов для каждого из наших адресов в базе данных. Как лучше хранить часовые пояса? Как бы вы пошли о приобретении часовых поясов для существующих адресных записей?
Я использую сервер Microsoft SQL, .net mvc, C #. Любые предложения будут ценны.
database
database-design
time
Родни
источник
источник
Ответы:
Вы хотите хранить то, что не меняется постоянно (или два раза в год). База данных часовых поясов https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - это как раз то, что нужно. Таким образом, вы просто храните две буквы.
Из этой базы данных вы можете узнать смещение времени и время перехода на летнее время. Это не просто временной сдвиг, он также дает вам область, поэтому многие места на одной широте будут иметь разные коды и могут индивидуально изменять свои правила часового пояса, и ваше программное обеспечение сможет справиться с этим.
Единственный момент, когда вам нужно внести изменения в вашу базу данных, это когда местоположение меняет часовой пояс, к которому оно принадлежит, что будет очень редко.
источник
Абсолютно наилучшей практикой будет использование базы данных, которая поддерживает
TIMESTAMP WITH TIMEZONE
тип данных, определенный SQL99.SQL Server имеет тип с именем,
datetimeoffset
который делает все, чтоTIMESTAMP WITH TIMEZONE
может, кроме хранения фактического часового пояса. Все, что вы можете сделать, это сохранить смещение от UTC (например,2013-05-04 12:34:56 -5:00
), что означает, что вам придется определить это перед хранением на основе часового пояса.источник
Предполагая, что вы используете .Net Framework 4.0 или выше, TimeZoneInfo - это то, что вам нужно.
Сохраните все значения даты в базе данных в формате UTC. Используйте значение ID или результат ToSerializedString () для каждого клиента, чтобы создать объект TimeZoneInfo для преобразования сохраненных дат в локальный формат для отображения.
источник
Вы сказали, что хотите сохранить часовой пояс для каждого адреса в вашей БД, но не сказали, что вы хотите с ним делать. Хранение чего-либо в БД редко является самоцелью.
В любом случае я хотел бы использовать базу данных TZ, то есть базу данных Olsen, напрямую или с помощью некоторого готового программного обеспечения, которое интегрирует TZ. Вы можете сохранить часовой пояс просто в виде строки для ссылки на одну из записей БД TZ , например, «Африка / Кампала» или «Европа / Париж».
источник