declare @FLD_EnterTime datetime,@FLD_ShopId varchar(20),@HourIndex int
set @FLD_EnterTime ='2011-07-27 00:00:00'
set @FLD_ShopId=1
print @FLD_EnterTimeexec('update T_DayStats set fld_count=fld_count+ 1 where FLD_ShopId='+@FLD_ShopId+'+ and FLD_DT < dateadd(d,-1,'+ cast(varchar ,@FLD_EnterTime,100)+')')提示:
消息 102,级别 15,状态 1,第 6 行
'cast' 附近有语法错误。不用动态的时候没有问题~
这到底是什么地方出问题了啊~
set @FLD_EnterTime ='2011-07-27 00:00:00'
set @FLD_ShopId=1
print @FLD_EnterTimeexec('update T_DayStats set fld_count=fld_count+ 1 where FLD_ShopId='+@FLD_ShopId+'+ and FLD_DT < dateadd(d,-1,'+ cast(varchar ,@FLD_EnterTime,100)+')')提示:
消息 102,级别 15,状态 1,第 6 行
'cast' 附近有语法错误。不用动态的时候没有问题~
这到底是什么地方出问题了啊~
把Exec里面的字符串放一变量里,
然后exec该变量。
declare @sql varchar(4000)
set @sql = 'update T_DayStats set fld_count=fld_count+ 1 where FLD_ShopId='+@FLD_ShopId+'+ and FLD_DT < dateadd(d,-1,'+ cast(varchar ,@FLD_EnterTime,100)+')'
exec(@sql)
CAST (expression AS data_type [ (length ) ] )
刚才写的CAST函数错了,现在改正了
declare @FLD_EnterTime datetime,@FLD_ShopId varchar(20),@HourIndex int,@sql varchar(4000)
set @FLD_EnterTime ='2011-07-27 00:00:00'
set @FLD_ShopId=1
print @FLD_EnterTimeset @sql = 'update T_DayStats set fld_count=fld_count+ 1 where FLD_ShopId='+@FLD_ShopId+' and FLD_DT < dateadd(d,-1,'+ cast(@FLD_EnterTime as varchar(100))+')'
exec(@sql)
运行提示:07 27 2011 12:00AM
消息 102,级别 15,状态 1,第 1 行
'27' 附近有语法错误。应该是LD_DT < dateadd(d,-1,'+ cast(@FLD_EnterTime as varchar(100))+')' 的时间有点问题啊~
set @FLD_EnterTime ='2011-07-27 00:00:00'
set @FLD_ShopId=1
print @FLD_EnterTimeset @sql = 'update T_DayStats set fld_count=fld_count+ 1 where FLD_ShopId='+@FLD_ShopId+' and FLD_DT < dateadd(d,-1,'''+ convert(varchar(20),@FLD_EnterTime ,120)+''')'
exec(@sql)