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