INSERT 语句 - SQL 服务器 - 错误 -Nvarchar 值‘2020’溢出 TINYINT 列
INSERT statement - SQL server- Error -Nvarchar value ‘2020’ overflowed TINYINT column
尝试将 Year 的值(即 2020)插入数据类型为 TINYINT 的列中,这是不可能的,因为 TINYINT 的存储范围为 0-255。如果我想存储值 2020 而不使用更大的整数列(即不将数据类型从 TINYINT 更改为 INT、BIGINT 等),是否有 workaround/solution(使用 Convert/Cast 或任何其他可能的方式)
我正在使用 SQL SERVER Management Studio。
请帮忙。
alter yourTable alter column year varchar(4);
如果您需要作为数字,您至少需要使用 smallint(-32000 到 32000)
alter yourTable alter column year smallint;
我了解到2020无法保存为tinyint,数据类型需要改为int,bigint,varchar等
进一步阐述我的问题陈述,我被要求以某种方式在 TINYINT
:
中输入年份
- 不改变数据类型,
- 通过在 SQL 服务器中使用内置的
DATENAME
和 getdate()
函数。
因此,我使用以下内容按照上述两个要求存储了 20
:
CONVERT(TINYINT,SUBSTRING(CAST(DATENAME(YEAR,GETDATE())AS CHAR),3,2))
尝试将 Year 的值(即 2020)插入数据类型为 TINYINT 的列中,这是不可能的,因为 TINYINT 的存储范围为 0-255。如果我想存储值 2020 而不使用更大的整数列(即不将数据类型从 TINYINT 更改为 INT、BIGINT 等),是否有 workaround/solution(使用 Convert/Cast 或任何其他可能的方式) 我正在使用 SQL SERVER Management Studio。 请帮忙。
alter yourTable alter column year varchar(4);
如果您需要作为数字,您至少需要使用 smallint(-32000 到 32000)
alter yourTable alter column year smallint;
我了解到2020无法保存为tinyint,数据类型需要改为int,bigint,varchar等
进一步阐述我的问题陈述,我被要求以某种方式在 TINYINT
:
- 不改变数据类型,
- 通过在 SQL 服务器中使用内置的
DATENAME
和getdate()
函数。
因此,我使用以下内容按照上述两个要求存储了 20
:
CONVERT(TINYINT,SUBSTRING(CAST(DATENAME(YEAR,GETDATE())AS CHAR),3,2))