如何在SQL Server 2012中将数据类型从日期更改为int?

隆特

我有一张桌子

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更改dateinteger

我遵循了w3school.com的教程:

ALTER TABLE table_name
ALTER COLUMN column_name datatype

这是我的代码:

ALTER TABLE Student 
ALTER COLUMN birthyear int

但这会引发错误

操作数类型冲突:日期与int不兼容

你们可以帮我吗?请。

谢谢!

marc_s

您不能直接执行此操作-DATE不是INT-SQL Server应该如何将日期2015-05-07转换为INT

您基本上有两个选择:

选项#1:将当前列重命名为birthyearbirthdate并添加一个计算列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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在SQL Server中将列的数据类型从整数更改为文本?

SQL Server 2012将int更改为日期<> Saturdays 7

如何在SQL Server中更改列的数据类型?

如何在 SQL Server 中将整数数据类型列值转换为日期时间

如何在SQL Server中将序列类型从int更改为bigint

在 SQL Server 中将文本数据类型更改为 nvarchar(max) 是否安全

在SQL Server 2012中将newid()存储在数据类型为UNIQUEIDENTIFIER的列中有什么优势?

如何在SQL Server中存储Point数据类型?

如何在PostgreSQL 8.4中将列数据类型从字符更改为数字

如何在ORM Symfony 4中将列的数据类型从STRING更改为TEXT?

如何在SQL Server 2008中将行更改为列(多个表,联接等)

SQL Server中具有日期数据的int数据类型的CONVERT函数

如何在 Python 中将 int 数据类型的分类数据更改为数字数据

如何在SQL Server中将表数据的值更改为“可用”?

将日期数据类型从SQL Server转换为C#中的ToShortDateString

在SQL Server中更改列的数据类型

如何在SQL Server 2012中将数据量不同的多行合并为一行

如何在SQL Server 2016中将现有表列修改为HIDDEN?

如何仅从SQL Server DateTime数据类型返回日期

如何在MS SQL SERVER 2008 R2中将nvarchar列转换为日期时间类型

SQL Server更改主键数据类型

如何在SQL Server中获取视图的列的数据类型?

如何在 SQL Server 中返回动态十进制数据类型?

如何在SQL Server中添加时间数据类型列

了解SQL Server Int数据类型

如何在SQL Server 2012中将varchar 1,760,862.8185919转换为float?

SQL Server代理中的错误:“将varchar数据类型与日期时间数据类型进行对话导致超出范围。”

如何在sql server 2008中将当前年份转换为当前日期

在SQL Server 2005中将datetime2创建为自定义数据类型