日期:2014-05-17  浏览次数:20537 次

求SQL:如何更新一个字段,把19861206更改为日期型的字段1986-12-06
如标题,表名为T,字段如下:

CUS_ID,CUS_NAME,CUS_BIRTH
--------------------------
2001,张三,19861206
2002,王五,19880101


需要得到的结果,更新表T为以下格式:


CUS_ID,CUS_NAME,CUS_BIRTH
--------------------------
2001,张三,1986-12-06
2002,王五,1988-01-01


------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

CUS_BIRTH 这个是什么类型的,字符,还是数字
目前是Varchar(8)类型


哦,那是不是得先修改数据类型呢,修改为datetime类型,或者至少得修改为varchar(10)

是滴,刚刚转换date类型失败,现在已经修改为Varchar(10)


呵呵,试试这个:

--drop table t

create table t(CUS_ID int,CUS_NAME varchar(10),CUS_BIRTH varchar(10))

insert into t
select 2001,'张三','19861206' union all
select 2002,'王五','19880101'
go


update t
set CUS_BIRTH = convert(varchar(10),CAST(CUS_BIRTH as datetime),120)


select * from t
/*
CUS_ID CUS_NAME CUS_BIRTH
2001 张三 1986-12-06
2002 王五 1988-01-01
*/


120 代表什么意思呢?


是一种格式的代码:

120 或者 20 格式为:yyyy-mm-dd hh:mi:ss(24h)

具体的可以参考这个:
http://www.w3school.com.cn/sql/func_convert.asp