我正在使用SQL Server 2012并且有一个包含 Orderdate 列的表格,其中包含varchar(8)
格式的日期,例如 28082015 。我需要在日期格式103中将此日期转换为日期(ddmmyyyy),并为此创建了一个新列。
SELECT
[Custid]
,[orderdate],....
,[newcol]
FROM mytable
如何转换和更新我在日期格式中创建的新列(newcol)中的日期。
答案 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