更改迄今为止的数字列

Sri*_*Rao 2 sql t-sql sql-server

我有一个表,其中一个列是DOB当前的Type Numeric(7,0).该列的样本值如下

DOB
0
1050418
1050412
1060303
Run Code Online (Sandbox Code Playgroud)

我在SQL中转换列如下

SELECT Convert(Date,Convert(varchar,19000000+DOB),101) as DOB_Date From Test where DOB<>0
Run Code Online (Sandbox Code Playgroud)

我的目标是将此列转换为日期日期类型.

执行SQL时

ALTER TABLE TEST ALTER COLUMN DOB DATE NULL;
Run Code Online (Sandbox Code Playgroud)

给出错误

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

Dam*_*ver 5

两种选择,整体差别不大.

1)将列数据类型更改为文本形式(例如varchar(10)).然后将文本值就地转换为可以明确转换为日期的表单(例如YYYYMMDD,不使用分隔符),然后执行第二次数据类型转换.

2)创建一个新的日期类型列.使用现有表达式执行更新以设置新值.删除旧列并(如有必要)重命名新列以匹配旧列名.