呵呵。 declare @s as char(15) set @s='33' set @s= rtrim(@s) + '12' select @s
declare @s as varchar(15) set @s='33' set @s=@s + '12' select @s试试这个 我认为是这样的 首先你定义@s 为char(15) 然后你赋值'33'后变成了'33 '最后有13个空格 当你加上'12'后再赋给@s 也要截断 不信可以试试这个 declare @s as char(15) declare @l as char(17) set @s='33' set @l=@s + '12' select @l
如果楼主将char(15)换成varchar(15)就不会出现这种问题了
不算SQL的BUG!declare @s as char(15) set @s='33' set @s= @s + '12'--因为此时@s已为15长,在其后加啥都不会变的 select @s把类型改了就可以了:declare @s as varchar(15)
猜猜看:(先不要试) Select 1 where cast('2003-10-10 00:00:00' as datetime) between cast('2003-10-09' as datetime) and cast('2003-10-09 23:59:59.999' as datetime)结果应该是什么?
txlicenhe(马可):这个问题我也遇到过,即系统会把2003-10-09 23:59:59.999当成2003-10-10 00:00:00,好象四舍五入了!后来发现毫秒的最后一位不是真实的值,如:Select cast('2003-10-09 23:59:59.995' as datetime),得到的是2003-10-09 23:59:59.997!最后用带毫秒的时间时毫秒只取两位算了!
declare @s as char(15)
set @s='33'
set @s= rtrim(@s) + '12'
select @s
set @s='33'
set @s=@s + '12'
select @s试试这个
我认为是这样的
首先你定义@s 为char(15)
然后你赋值'33'后变成了'33 '最后有13个空格
当你加上'12'后再赋给@s
也要截断
不信可以试试这个
declare @s as char(15)
declare @l as char(17)
set @s='33'
set @l=@s + '12'
select @l
set @s='33'
set @s= @s + '12'--因为此时@s已为15长,在其后加啥都不会变的
select @s把类型改了就可以了:declare @s as varchar(15)
Select 1 where cast('2003-10-10 00:00:00' as datetime)
between cast('2003-10-09' as datetime) and cast('2003-10-09 23:59:59.999' as datetime)结果应该是什么?