在存储过程中连接SQL语句的问题???

li3807 2007-05-31 03:47:19
DECLARE @ExeSQL nvarchar(1000)
SET @ExeSQL = 'SELECT ROW_NUMBER() OVER(Order By CD.OutDate DESC) AS SerialNumber,C.Name,SB.ID,M.Member_Name,CD.OutDate FROM dbo.CertifiedDetail CD Inner Join dbo.Customers C On CD.CustomerID = C.ID Inner Join dbo.SaleBill SB On CD.SaleID = SB.ID Inner Join dbo.Member M On SB.MemberID = M.Member_ID WHERE CD.IsDelete = 0 And (CD.OutDate Between ''' + @StartDate + ''' And ''' + @EndDate +''')'
print @ExeSQL

以上代码在运行存储过程时出现“从字符串向 datetime 转换时失败.”,@StartDate和@EndDate为存储过程参数
...全文
289 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
y_dong119 2007-05-31
  • 打赏
  • 举报
回复
楼主牛啊
haoyuzhou009 2007-05-31
  • 打赏
  • 举报
回复
恭喜!
li3807 2007-05-31
  • 打赏
  • 举报
回复
(CD.OutDate Between ''' + @StartDate + ''' And ''' + @EndDate +''')'
改为
(CD.OutDate Between @StartDate And @EndDate )

这种方法不行的,会出现需要声名变量@StartDate

我的方法是 CAST(@StartDate as nvarchar(10) 把二个日期变量传换为字符串
li3807 2007-05-31
  • 打赏
  • 举报
回复
搞定了。
gogocsgogodn 2007-05-31
  • 打赏
  • 举报
回复
(CD.OutDate Between ''' + @StartDate + ''' And ''' + @EndDate +''')'
改为
(CD.OutDate Between @StartDate And @EndDate )

li3807 2007-05-31
  • 打赏
  • 举报
回复
传入的参数@StartDate和@EndDate类型没有错误,是有效的日期
$扫地僧$ 2007-05-31
  • 打赏
  • 举报
回复
你可以检查一下
@StartDate和@EndDate
传入的是否是有效的日期阿!

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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