sql 2012 varchar到日期格式转换

时间:2016-09-19 13:28:48

标签: sql sql-server sql-server-2012

我正在使用SQL Server 2012并且有一个包含 Orderdate 列的表格,其中包含varchar(8)格式的日期,例如 28082015 。我需要在日期格式103中将此日期转换为日期(ddmmyyyy),并为此创建了一个新列。

SELECT  
       [Custid]
      ,[orderdate],....
      ,[newcol]

FROM mytable

如何转换和更新我在日期格式中创建的新列(newcol)中的日期。

2 个答案:

答案 0 :(得分:0)

尝试使用以下查询。

UPDATE t
SET newcol=CONVERT(datetime,LEFT (Orderdate,2)+'-'+SUBSTRING(Orderdate,3,2)+'-'+ RIGHT(Orderdate,4) ,103)
FROM mytable t
WHERE ISNULL(t.Orderdate,'')!=''

或使用STUFF功能。

UPDATE t
SET newcol=CONVERT(datetime,STUFF(STUFF(Orderdate,3,0,'-'),6,0,'-'),103)
FROM mytable t
WHERE ISNULL(t.Orderdate,'')!=''

答案 1 :(得分:0)

- 截断表#RobTemp     create table #RobTemp(DateIn Varchar(8))

insert into #RobTemp (DateIn) Values ('10202018')
insert into #RobTemp (DateIn) Values (null)
insert into #RobTemp (DateIn) Values ('02302016')

select case isdate(convert(DateTime, substring(DateIn,1,2) + '/' + substring(DateIn,3,2) + '/' + substring(DateIn,5,4) )) 
             when 1 then convert(DateTime, substring(DateIn,1,2) + '/' + substring(DateIn,3,2) + '/' + substring(DateIn,5,4) ) 
             else null end 
from #RobTemp