#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.Одной десятичной позиции может быть недостаточно .