Оператор INSERT - SQL server- Ошибка -Nvarchar value '2020' переполнен столбец TINYINT - PullRequest
0 голосов
/ 12 апреля 2020

Попытка вставить значение года, т.е. 2020 года, в столбец с типом данных TINYINT, что невозможно, поскольку TINYINT сохраняет значения 0-255. Есть ли обходной путь / решение (с помощью Convert / Cast или любым другим возможным способом), если я хочу сохранить значение 2020 без использования целочисленного столбца большего размера (т. Е. Без изменения типа данных с TINYINT на INT, BIGINT et c.) I использую SQL SERVER Management Studio. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Я понимаю, что 2020 не может быть сохранен в tinyint, и необходимо изменить тип данных на int, bigint, varchar et c.

Для дальнейшей разработки моего постановки вопроса мне нужно было как-то ввести Год в TINYINT:

  1. Без изменения типа данных и
  2. С помощью встроенного DATENAME и getdate() функции на SQL сервере.

Итак, я сохранил 20 согласно двум вышеупомянутым требованиям, используя следующие:

CONVERT(TINYINT,SUBSTRING(CAST(DATENAME(YEAR,GETDATE())AS CHAR),3,2))
0 голосов
/ 12 апреля 2020
alter yourTable alter column year varchar(4);

Если вам нужно в качестве числа, вы должны использовать хотя бы smallint (от -32000 до 32000)

alter yourTable alter column year smallint;
...