【发布时间】:2015-04-23 12:12:40
【问题描述】:
我在这里创建了一个搜索 SP,只是根据屏幕上的用户输入准备参数。
现在我需要将表格列以及输入参数转换为DATE类型,然后需要查询。
以下是我需要实现的部分程序。
问题是,我现在收到以下错误:
数据类型 varchar(max) 和 date 在 add 运算符中不兼容。
DECLARE @WhereClause VARCHAR(MAX)
DECLARE @DateField DATETIME = GETDATE()
DECLARE @DateFieldTo DATETIME = GETDATE() +1
SET @WhereClause = @WhereClause + ' AND CAST(tbl.DateField AS DATE) BETWEEN ''' + CAST(@DateField AS DATE) + ''' + AND ''' + CAST(@DateFieldTo AS DATE)+ ''
PRINT @WhereClause
我尝试了以下方法:
DECLARE @WhereClause VARCHAR(MAX)
DECLARE @DateField DATETIME = GETDATE()
DECLARE @DateFieldTo DATETIME = GETDATE() +1
DECLARE @YourSQLVariable VARCHAR(MAX)
SET @WhereClause = @WhereClause + ' AND CAST(tbl.DateField AS DATE) BETWEEN CAST(@DateField AS DATE) + AND CAST(@DateFieldTo AS DATE)'
SET @YourSQLVariable = 'SELECT 1 WHERE' + @WhereClause
EXEC sp_executeSQL @YourSQLVariable,N'@DateField DATETIME,@DateFieldTo DATETIME ',@DateField,@DateFieldTo
得到:
错误:过程需要“ntext/nchar/nvarchar”类型的参数“@statement”。
【问题讨论】:
-
您必须先将
CAST(@DateField AS DATE)的部分转换为varchar。
标签: sql-server sql-server-2008 sql-server-2008-r2