用 set @str='select * from table datediff('+@OrderDateType+',Dv_Topic.DateAndTime,getdate())=@num'set @str='select * from table datediff('+@OrderDateType+',Dv_Topic.DateAndTime,getdate())='+ CONVERT(nvarchar,@num) +'@num 由asp 传递过来,这两种写法都报错,说@num要定义,我在存储过程已经定义了 @num int 怎么回事?
set @str='select * from table datediff('+@OrderDateType+',Dv_Topic.DateAndTime,getdate())='+ltrim(@num)
select @OrderDateType = 'mm'
exec('select *
from table1
where datediff('+@OrderDateType+',DateAndTime,getdate()) =1')
select @OrderDateType = 'mm'
if @OrderDateType = 'mm'
select *
from table1
where datediff(mm,DateAndTime,getdate()) =1
else if ...
....
而datediff的参数是标识符. 所以错误.比如正确的应该是
datediff(dd,dateAndTime,getdate())
而你的写法会产生
datediff('dd',dateAndTime,getdate())
这样的,所以是错的.因为 datediff的第一个参数是内置标识代码,不支持变量或计算.
用if 分支或动态语句.
用参数的目的是因为datediff 类型是由asp 传过来的参数决定。
@num int
怎么回事?