sql 传参的有关问题 急

sql 传参的问题 急…………
select * from XXX where UP_UserName = ? and 
UP_optime between ?and ? 

我想给上边的 占位符传入参数
但是会变成

select * from XXX where UP_UserName = 'xxx' and 
UP_optime between ' dateadd( mm, datediff(mm,0,getdate())-1, 0)'
and ' dateadd( mm, datediff(mm,0,getdate()), 0) '

注:此处查询的是前一个月的数据

up_optime 是datatime 类型 而传入的参数 会把它变为字符串类型 现在不想让传入参数那块带 ‘ (单引号)
怎么做?
 或者有其他解决方案吗?

------解决方案--------------------
如果你所传入的参数其实是个计算式的话,就不能没法用 set 来设置参数。

只能是直接把SQL拼好,类似:
select * from XXX where UP_UserName = ? and
UP_optime between dateadd(?, datediff(?,0,getdate())-1, 0)
and dateadd(?, datediff(?,0,getdate()), 0)
------解决方案--------------------
没有,PreparedStatement只能传递参数值。

你这个实际上是语句,而语句是不能当作参数来传递,这就类似于你不能写:

Select * From table1 Where ? = ?

然后第一个?传递 字段名,第二个?传递 值。



但你可以在语句之中用参数啊:
datediff(?, 0, getdate())