Подтвердить что ты не робот

SQL DataType - как хранить год?

Мне нужно вставить год (например: 1988, 1990 и т.д.) в базу данных. Когда я использовал дату или дату тип данных, он показывает ошибки. Какой тип данных я должен использовать.

4b9b3361

Ответ 1

Если вам нужно сохранить год в базе данных, вам нужно либо использовать тип данных Integer (если вы мертвы, установленный только для хранения года), либо тип данных DateTime (который должен включать сохранение даты, которая в основном равна 1/1/1990 00:00:00 в формате).

Ответ 2

регулярный 4 байта INT - путь к большому, это пустая трата пространства!

Вы не говорите, какую базу данных вы используете, поэтому я не могу рекомендовать определенный тип данных. Все говорят "use integer", но большинство баз данных хранят целые числа в 4 байта, что намного больше, чем вам нужно. Вы должны использовать целое число из двух байтов (smallint на SQL Server), которое лучше сохранит пространство.

Ответ 3

Эй, вы можете использовать тип данных year() в MySQL Он доступен в двузначном или четырехзначном формате.

Примечание. Значения разрешены в четырехзначном формате: от 1901 до 2155. Значения разрешены в двузначном формате: от 70 до 69, представляя годы от 1970 до 2069

Ответ 4

Сохранение "Года" в MSSQL в идеале будет зависеть от того, что вы делаете с ним и каково значение этого "года" для вашего приложения и базы данных. Это, как говорится, есть несколько вещей, чтобы заявить здесь. В 2012 году в MSSQL нет "DataType" для Year of the 2012. Я бы склонялся к использованию SMALLINT, так как он всего 2 байта (сэкономит вам 2 из 4 байтов, которые требует INT). Ваше ограничение состоит в том, что вы не можете иметь год старше 32767 (с SQL Server 2008R2). Я действительно не думаю, что SQL будет базой данных по выбору десять тысяч лет, а тем более 32767. Вы можете рассматривать INT как функцию Year() в MSSQL, которая преобразует тип данных "DATE" в INT. Как я уже сказал, это зависит от того, где вы получаете данные и куда они идут, но SMALLINT должен быть в порядке. INT будет излишним... если у вас нет других причин, подобных тому, что я упоминал выше, или если потребность в коде требует его в форме INT (например, интеграция с существующим приложением). Скорее всего SMALLINT должен быть в порядке.

Ответ 5

Только год, ничего больше? Почему бы не использовать простое целое число?

Ответ 6

Используйте целое число, если все, что вам нужно сохранить, - это год. Вы также можете использовать datetime, если считаете, что будут расчеты на основе даты при запросе этого столбца.

Ответ 7

Хранение может быть только частью проблемы. Как это значение будет использоваться в запросе?

Будет ли это сопоставление с другими типами данных даты или времени, или все связанные строки также имеют числовые значения?

Как вы справитесь с изменением требований? Как легко вы могли бы отреагировать на запрос о замене года меньшим временным фрагментом? Теперь они хотят, чтобы он разбился по кварталам?

Цифрный тип может быть легко использован в запросе времени дат, чтобы иметь справочную таблицу для объединения с такими типами, как даты начала и окончания (от 1/1/X до 12/31/x) и т.д.

Ответ 8

Я не думаю, что использование целого числа или любого подтипа целого числа является хорошим выбором. Рано или поздно вам придется делать другую дату, например, операции с ней. Также в 2019 году не стоит слишком беспокоиться о космосе. Посмотрите, что сэкономленные 2 байта стоили нам в 2000 году.

Я предлагаю использовать дату года + 0101, преобразованную в истинную дату. Аналогично, если вам нужно хранить месяц года, храните год + месяц + 01 как истинную дату.

Если вы сделали это, вы сможете правильно делать "свидания с ним" позже

Ответ 9

Вы пытаетесь вставить год в базу данных и затем используете:
type YEAR