тип данных для хранения часовых поясов

#asp.net #sql #sql-server #timezone #timezone-offset

#asp.net #sql #sql-сервер #Часовой пояс #смещение часового пояса

Вопрос:

Я хочу сохранить часовые пояса, но не в типе данных timezoneoffset. Должен ли я использовать десятичное число или число с плавающей запятой? Или что-то еще? Часовыми поясами могут быть GMT -3.5 для Ньюфаундленда или 5.5 для некоторых частей Индии, поэтому int не будет работать.

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

1. Как насчет часовых поясов типа «Америка / Ванкувер»? Корректировки летнего времени (когда это происходит и существует ли оно вообще) зависят от политики, поэтому есть веский аргумент в пользу использования часовых поясов на основе городов.

Ответ №1:

Почему бы не использовать таблицу подстановки? Это выглядело бы так:

 create table TimeZone (
    id int identity primary key,
    name varchar(50),
    offset decimal(2,1)
)
  

Со ссылкой на внешний ключ из вашей основной таблицы.

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

1. Что, если я просто хочу выбрать тип данных? Какой тип данных выбрать в SQL server?

2. В моем случае вы бы использовали int и сделали бы его внешним ключом, который ссылается на приведенную выше таблицу. Кроме datetimeoffset, вашим единственным другим вариантом будет десятичный или числовой столбец. Я бы предпочел подход с отдельной таблицей, поскольку вы могли бы использовать его для управления выпадающим списком в пользовательском интерфейсе, и это улучшило бы отчетность.

3. ЕСЛИ я использую десятичную дробь, что мне следует использовать? Десятичный (4,2)?

4. Я бы сказал, 3,1. Проверьте документацию для decimal типа данных для получения дополнительной информации.

5.Одной десятичной позиции может быть недостаточно .