Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 date VS varchar(8)  [new]
Digit_ALL
Member

Откуда: Одесса
Сообщений: 86
Прошу совета у общественности! : "как лучше и кошернее хранить ДАТУ" ? (без времени)

Варианты:
1 - varchar(8)
2 - date

Лично я склоняюсь к "нормальному" решению - раз это дата, то и жить ей в поле с типом DATE.

На данный момент имеется база, в которой почему-то половина полей в варчаре, а половина в DATE.
Из-за этого сброда куча проблем: там преобразовать в один тип, а сям преобразовать в другой (а если ошибся, то индексы не "отработают", или автоматическое приведение случайно где-то превратит дату 20170101 в строку '2017-01-')

Очень это похоже на какой-то "ХолиВар", если так, прошу подсказать ссылки где обсуждалось.
21 янв 17, 01:11    [20129612]     Ответить | Цитировать Сообщить модератору
 Re: date VS varchar(8)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Странно, почему никто не спрашивает, как хранить числа (без дробной части): в специально сделанных для этого типах, или строкой?

З.Ы. Кстати, а строка-то круче. Туда можно 32е февраля записать, например.

Сообщение было отредактировано: 21 янв 17, 02:21
21 янв 17, 02:17    [20129639]     Ответить | Цитировать Сообщить модератору
 Re: date VS varchar(8)  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Digit_ALL,

У нас дату хранят в int
21 янв 17, 10:28    [20129810]     Ответить | Цитировать Сообщить модератору
 Re: date VS varchar(8)  [new]
Digit_ALL
Member

Откуда: Одесса
Сообщений: 86
TaPaK,
Точно! Забыл. Еще есть одна база с INT-ами, но до неё пока руки не дошли.
Вот я сидел, сидел, чинил, менял, и решил спросить у гуру.
Может я какой-то тайны не знаю, и это так и надо, дату в строке, чтоб врагам тяжелее было.
21 янв 17, 10:52    [20129829]     Ответить | Цитировать Сообщить модератору
 Re: date VS varchar(8)  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Digit_ALL,

Дату в строке хранят те, кто не подозревает о наличиии типов datetime, date и т.п.
Или те, кому приспичило хранить дату в определенном формате и они не знают о возможности создавать вычисляемые столбцы.

Хранить дату как int иногда имело смысл. После появления типа date этот смысл пропал.

В любом случае, проблемы возникнут, когда потребуется манипулировать этими данными как с датами.
21 янв 17, 12:31    [20129941]     Ответить | Цитировать Сообщить модератору
 Re: date VS varchar(8)  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
invm
проблемы возникнут, когда потребуется манипулировать этими данными как с датами
Проблемы возникнут, когда надо будет строку конвертировать в дату, а это невозможно.
Или строковый формат даты неизвестен: девятое ноября или одиннадцатое сентября?
21 янв 17, 15:23    [20130237]     Ответить | Цитировать Сообщить модератору
 Re: date VS varchar(8)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
date 3 байта, что тут думать. Плюс нативная поддержка всех преобразований дат.
21 янв 17, 15:31    [20130247]     Ответить | Цитировать Сообщить модератору
 Re: date VS varchar(8)  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
iap
Проблемы возникнут, когда надо будет строку конвертировать в дату, а это невозможно.
Или строковый формат даты неизвестен: девятое ноября или одиннадцатое сентября?
А это не относится к "когда потребуется манипулировать этими данными как с датами"?
21 янв 17, 15:35    [20130254]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить