将varchar值转换为数据类型为int的列时发生语法错误

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:23:22
MSSQL数据库一存储过程:

CREATE PROCEDURE post_time
@tyear varchar(4)='',
@tmonth varchar(2)='',
@tday varchar(2)='',
@thour varchar(2)='',
@tminute varchar(2)='',
@tsecond varchar(2)=''
As

declare @time datetime
set @time=getdate()
declare @b varchar(30)
declare @year varchar(4)
declare @month varchar(2)
declare @day varchar(2)
declare @hour varchar(2)
declare @minute varchar(2)
declare @second varchar(2)
declare @millisecond varchar(4)

set @year=(Case When @tyear='' then Cast(year(@time) as varchar(4)) else @tyear end)
set @month=(Case When @tmonth='' then Cast(month(@time) as varchar(2)) else @tmonth end)
set @day=(Case When @tday='' then Cast(day(@time) as varchar(2)) else @tday end)
set @hour=(Case When @thour='' then Cast(datepart(hh,@time) as varchar(2)) else @thour end)
set @min

先问问你这个存储过程想实现什么功能?

'2001-03-11 03:23:03.420' 这样的格式的字符怎么能转INT啊

你这个根本就实现什么功能嘛
帮你改了以句 可以执行了
alter PROCEDURE post_time
@tyear varchar(4),
@tmonth varchar(2),
@tday varchar(2),
@thour varchar(2),
@tminute varchar(2),
@tsecond varchar(2)
As

declare @time datetime
set @time=getdate()
declare @b varchar(30)
declare @year varchar(4)
declare @month varchar(2)
declare @day varchar(2)
declare @hour varchar(2)
declare @minute varchar(2)
declare @second varchar(2)
declare @millisecond varchar(4)

set @year=(Case When @tyear='' then Cast(year(@time) as varchar(4)) else @tyear end)
set @month=(Case When @tmonth='' then Cast(month(@time) as varchar(2)) else @tmonth end)
set @day=(Case When @tday='' then Cast(day(@time) as varchar(2)) else @tday end)
set @hour=(Case When @thour='' then Cast(dat