我有一张桌子
CREATE TABLE Student
(
s_id int NOT NULL IDENTITY(1,1),
sname nvarchar(30) NOT NULL,
address nvarchar(30) NOT NULL,
gender varchar(10) NOT NULL,
birthyear date NOT NULL,
CONSTRAINT PK_Student PRIMARY KEY (s_id)
);
现在,我想将列的数据类型birthyear
从更改date
为integer
。
我遵循了w3school.com的教程:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
这是我的代码:
ALTER TABLE Student
ALTER COLUMN birthyear int
但这会引发错误
操作数类型冲突:日期与int不兼容
你们可以帮我吗?请。
谢谢!
您不能直接执行此操作-DATE
不是INT
-SQL Server应该如何将日期2015-05-07
转换为INT
?
您基本上有两个选择:
选项#1:将当前列重命名为birthyear
,birthdate
并添加一个计算列birthyear
,该列只为您提供该日期的年份:
-- rename "birthyear" to "birthdate"
EXEC sp_RENAME 'Student.Birthyear' , 'BirthDate', 'COLUMN'
-- add new computed column "birthyear"
ALTER TABLE dbo.Student
ADD BirthYear AS YEAR(birthdate) PERSISTED
选项#2:创建新列,将日期的年份放入该列,删除旧列,将新列重命名为旧名称
-- add new column "newbirthyear"
ALTER TABLE dbo.Student
ADD NewBirthYear INT
-- update table, extract YEAR(birthyear) into new column
UPDATE dbo.Student
SET NewBirthYear = YEAR(birthyear)
-- drop old column
ALTER TABLE dbo.Student
DROP COLUMN birthyear
-- rename new column back to old column name
EXEC sp_RENAME 'Student.NewBirthyear' , 'BirthYear', 'COLUMN'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句