sql关于存储过程的时间参数

有以下一个存储过程:
create proc F_lostfinebksto @bdate datetime,
@edate datetime,

AS

begin

exec('select a.* from no5.r3mis.dbo.finebk a
where a.docdat>=''@bdate'' and a.docdat<''@edate''
')

end
执行exec f_lostfinebksto '20021028','20021029'
出现如下错误:
"从字符串转换为 datetime 时发生语法错误"
---------------------------------------------------------------

create proc F_lostfinebksto @bdate varchar(20),
@edate varchar(20),

AS

begin

exec('select a.* from no5.r3mis.dbo.finebk a
where a.docdat betwenn '''+@bdate+''' and '''+@edate+'''
')

end
执行exec f_lostfinebksto '2002-10-28','2002-10-29'

---------------------------------------------------------------

struggle_wx (struggle) 的问题:
1、日期格式
2、为什么用''?肯定错了!
3、为什么一定要用exec?直接查询可以么?
sula(hyfhot) 的问题:
struggle_wx (struggle) 的意思是用半开半闭区间b<=x

1<e,你改成了开区间,应该是不合要求的。其它的地方应该是对的。可以参考。 @bdate="" @edate="" a="" a.*="" a.docdat="" as="" begin="" create="" exec('select="" f_lostfinebksto="" from="" no5.r3mis.dbo.finebk="" proc="" varchar(20),="" where="" 略作修改:="">='''+@bdate+''' and a.docdat&lt;'''+@edate+'''   
2')   
3  
4end   
5执行exec f_lostfinebksto '2002-10-28','2002-10-29'</e,你改成了开区间,应该是不合要求的。其它的地方应该是对的。可以参考。>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus