读书人

varchar转换datetime有关问题

发布时间: 2012-06-11 17:42:22 作者: rapoo

varchar转换datetime问题

SQL code
declare @a varchar(14)declare @c varchar(6)declare @b datetimeset @a ='20111101000000'set @c = substring(@a,1,8)print @cset @b = convert(datetime,@c,120)print @b

打印结果是
201111
11 11 2020 12:00AM

这是为什么?

[解决办法]
1.你定的@c 最大才6字,如果大於6截取前6. 所以是 201111
2.Datetime 默打印的格式 是 MM DD YYYY hh:mimi AM(PM) , 因你的@c 是 201111 SQL解析成YYMMDD(20年11月11日),所以你打印出的是 11 11 2020 12:00AM
[解决办法]
SQL code
declare @a varchar(14)declare @c varchar(8)  --楼主注意这里,截取的是8位,但定义了6位。declare @b datetimeset @a ='20111101000000'set @c = substring(@a,1,8)print @cset @b = convert(datetime,@c,112)print @b
[解决办法]
SQL code
declare @a varchar(14)declare @c varchar(8)declare @b datetimeset @a ='20111101000000'set @c = substring(@a,1,8)print @cset @b = convert(VARCHAR(10),@c,120)print CONVERT(VARCHAR(10),@b,120)
[解决办法]
SQL code
declare @a varchar(14)declare @c varchar(6) declare @b datetime set @a ='20111101000000' print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,8)),121)
[解决办法]
SQL code
declare @a varchar(14)set @a ='20111101000000' print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,8)),121) 

读书人网 >SQL Server

热点推荐