字符型转换日期型的问题
表tem_table有一个字段strDate是字符型,里面记录的是日期内容,内容格式如下:
106001 - if date is 2006-01-01
106002 - if date is 2006-01-02
...
106031 - if date is 2006-01-31
106032 - if date is 2006-02-01
....
106364 - if date is 2006-12-30
106365 - if date is 2006-12-31
...
107001 - if date is 2007-01-01
107002 - if date is 2007-01-02
...
107031 - if date is 2007-01-31
107032 - if date is 2007-02-01
我现在想在显示时直接显示为正常的日期形式,该怎么做呀?
问题点数:20、回复次数:6Top
1 楼mislrb(上班看看早报,上上CSDN,下班看看电影)回复于 2006-03-02 12:53:27 得分 0
select convert(datetime,right(strdate,10),120) from yourtableTop
2 楼zl_c(闲杂人等)回复于 2006-03-02 14:07:51 得分 0
字符串型:格式2006-3-1
convert(varchar(10),dateadd(dd,DATEPART(dy,getdate()),cast('20'+substring(datestr,2,2)+'-1-1' as datetime)),020)
日期型:2006-2-1 00:00:00
dateadd(dd,DATEPART(dy,getdate()),cast('20'+substring(datestr,2,2)+'-1-1' as datetime))Top
3 楼seethe(匆匆勿)回复于 2006-03-02 14:29:21 得分 0
DATEADD([day], CAST(RIGHT(strDate, 3) AS int) - 1, CAST('20' + LEFT(RIGHT(strDate, LEN(strDate) - 1), 2) AS Datetime))
上面是我写的,并且是正确的显示为2006-2-1
我是想知道有别的简单的方法没有了Top
4 楼share1011(不知道)回复于 2006-03-02 16:05:16 得分 0
create table #t1(
a datetime,
b char(6)
)
declare @StartTime as datetime
declare @strDate as char(6)
set @StartTime='2006-1-1'
set @strDate ='106001'
while @StartTime<='2007-12-31'
begin
insert into #t1 values(@StartTime,@strDate)
set @StartTime=Dateadd(day,1,@StartTime)
set @strDate=@strDate+1
end
select * from #t1
这个是测试过的,直接执行,应该很快可以达到你要修改的目的的Top
5 楼share1011(不知道)回复于 2006-03-02 16:06:29 得分 0
然后你可以根据#t1和你的tem_table 通过字段b和strDate关联进行修改Top
6 楼yangyangxie(想飞的鱼)回复于 2006-03-02 17:05:26 得分 0
我也碰到过这种情况,因为原始数据在EXCEL表里的格式问题,设置一下它的格式为日期类型再导进去应该可以解决一部分,不过可以用JAVA导进去Top




