varchar转换datetime问题 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打印结果是20111111 11 2020 12:00AM这是为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.你定義的@c 最大才6個字節,如果大於6個舊截取前6個. 所以是 2011112.Datetime 默認打印的格式 是 MM DD YYYY hh:mimi AM(PM) , 因為你的@c 是 201111 SQL會解析成YYMMDD(20年11月11日),所以你打印出來的是 11 11 2020 12:00AM 我就是想把一个varchar(14)的字符串转换成年月的日期格式,那应该怎么写呢? 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 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)这跟你的DATETIME显示格式有关系,实际上你的set @b = convert(VARCHAR(10),@c,120)根本没起作用。出来还是DATETIME类型的,你转化为VARCHAR类型就可以了 可是我想转换成datetime类型啊 declare @a varchar(14)declare @c varchar(6) declare @b datetime set @a ='20111101000000' print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,8)),121) declare @a varchar(14)set @a ='20111101000000' print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,8)),121) declare @a varchar(14)declare @c varchar(8)declare @b datetimeset @a ='20111101000000'set @c = substring(@a,1,8)set @b = convert(datetime,@c,120)select @b/*******************-----------------------2011-11-01 00:00:00.000(1 行受影响)难道不是datetime么 declare @a varchar(14)set @a ='20111101000000' print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,6)+'01'),121) 两个bit类型怎么进行与操作 求T-SQL语法解释。 SQL数据库数据类型问题 求教一个存储过程的写法 100分求如何实现SQLSERVER2000的自动安装?? 在SQL语句中,两个Float字段相减为什么有很多位小数呀? sql 如何按照字段内容排序 请问.dbs文件是什么类型的数据库文件,用什么工具打开? SQL 远程登录关联问题 要对sql查询结果进行计算,并要改变结果中的值,怎样直接利用sql查询结果而不是放到虚拟表中运算,请大家帮忙 如何将数据默认值设置为某一字段 请问可以查询表的操作日志吗?请教好心的大虾
2.Datetime 默認打印的格式 是 MM DD YYYY hh:mimi AM(PM) , 因為你的@c 是 201111 SQL會解析成YYMMDD(20年11月11日),所以你打印出來的是 11 11 2020 12:00AM
declare @a varchar(14)
declare @c varchar(8) --楼主注意这里,截取的是8位,但定义了6位。
declare @b datetimeset @a ='20111101000000'
set @c = substring(@a,1,8)
print @c
set @b = convert(datetime,@c,112)
print @b
declare @a varchar(14)
declare @c varchar(8)
declare @b datetimeset @a ='20111101000000'
set @c = substring(@a,1,8)
print @c
set @b = convert(VARCHAR(10),@c,120)
print CONVERT(VARCHAR(10),@b,120)这跟你的DATETIME显示格式有关系,实际上你的set @b = convert(VARCHAR(10),@c,120)根本没起作用。出来还是DATETIME类型的,你转化为VARCHAR类型就可以了
declare @a varchar(14)
declare @c varchar(6)
declare @b datetime
set @a ='20111101000000'
print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,8)),121)
declare @a varchar(14)
set @a ='20111101000000'
print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,8)),121)
declare @c varchar(8)
declare @b datetimeset @a ='20111101000000'
set @c = substring(@a,1,8)
set @b = convert(datetime,@c,120)
select @b/*******************-----------------------
2011-11-01 00:00:00.000(1 行受影响)难道不是datetime么
declare @a varchar(14)
set @a ='20111101000000'
print CONVERT(VARCHAR(23),CONVERT(DATETIME,LEFT(@a,6)+'01'),121)