请问如何在T_SQL生成变量@STRWHERE,对日期的处理有问题?

bobzhang 2004-11-22 09:07:55
也就是如何把日期变量两边加上"'",使他成为正确的查询语句

declare
@ProDefID int,
@ProBGType int,
@StatGrade int,
@StartDate datetime,
@EndDate datetime,
@QLRXZ int,
@PZYT int,
@SYQLX int,
@QSXZ int,
@STRWHERE varchar(200),
@BussinessNumber int
select @ProDefID=1
select @ProBGType=59
select @StartDate='2004-09-01'
select @EndDate='2005-01-01'
Select @STRWHERE=' 000' + ' AND Proinst_Type='+ cast(@ProDefID as varchar(3)) +' AND Proinst_Type=' + cast(@ProBGType as varchar(3)) +' AND Start_Date>='' + convert(varchar(20),@StartDate,20) + '' AND End_Date<= '' + convert(varchar(20),@EndDate,20) + '''
print 'SELECT Count(Proins_ID) FROM RT_PigeProStat WHERE not ZQ_DM like' + @STRWHERE
SELECT @BussinessNumber=Count(Proins_ID) FROM RT_PigeProStat WHERE not ZQ_DM like @STRWHERE
print @BussinessNumber

期望结果:
SELECT Count(Proins_ID) FROM RT_PigeProStat WHERE not ZQ_DM like 000 AND Proinst_Type=1 AND Proinst_Type=59 AND Start_Date>='2004-09-01 00:00:00' AND End_Date<= '2005-01-01 00:00:00'

...全文
58 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
didoleo 2004-11-22
  • 打赏
  • 举报
回复
把这句改一下就可以了。

Select @STRWHERE=' 000 AND Proints_Type='''+cast(@proDefID as varchar(3))+''''+' AND Proints_Type='''+cast(@ProBGType as varchar(3))+''''
+' AND Start_Date>='''+convert(varchar(20),@StartDate,20)+''''+' AND End_Date<='''+convert(varchar(20),@EndDATe,20)+''''
LJWS 2004-11-22
  • 打赏
  • 举报
回复
同字符串一样处理
use northwind
go
declare @date datetime
set @date='2002-01-06'
exec('select * from orders where orderdate='''+@date+'''')

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧