日期:2014-05-17  浏览次数:20999 次

从字符串转换日期和/或时间时,转换失败
遇到一个问题:

消息 241,级别 16,状态 1,过程 convertdatetimeTest,第 9 行
从字符串转换日期和/或时间时,转换失败。



/*
--datetime convert test
*/
use master
go

create procedure convertdatetimeTest
(
@input varchar
)
as
begin 
declare @datetime datetime
set @datetime=CONVERT(datetime,@input)
select @datetime
end

exec convertdatetimeTest '2013-7-17 13:15:07'





执行存储过程时报这个错误?




为什么我直接执行--select CONVERT(datetime,'2013-7-17 13:15:07')没有错呢? 

为什么存储过程就不能讲串转换成时间?
SQL 存储

------解决方案--------------------
 @input varchar  改成  @input varchar(30)
------解决方案--------------------
默认长度为1,被截断以后再转换格式是不对的。
------解决方案--------------------
varchar、char如果不指定括号中的长度,就是varchar(1)/char(1),联机丛书有说,存不进日期这么长,就自然报错了