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为存储过程参数
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为存储过程参数
@StartDate和@EndDate
传入的是否是有效的日期阿!
改为
(CD.OutDate Between @StartDate And @EndDate )
改为
(CD.OutDate Between @StartDate And @EndDate )这种方法不行的,会出现需要声名变量@StartDate
我的方法是 CAST(@StartDate as nvarchar(10) 把二个日期变量传换为字符串