Мне нужно вставить год (например: 1988, 1990 и т.д.) в базу данных. Когда я использовал дату или дату тип данных, он показывает ошибки. Какой тип данных я должен использовать.
SQL DataType - как хранить год?
Ответ 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