首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

varchar转换datetime有关问题

2012-06-11 
varchar转换datetime问题SQL codedeclare @a varchar(14)declare @c varchar(6)declare @b datetimeset @a

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) 

热点排行
Bad Request.