【发布时间】:2016-04-20 11:02:26
【问题描述】:
我正在尝试创建参数化查询以从表中检索数据
基本上我有一个表结构 ID nvarchar1 文本 日期时间1 日期时间2
我正在尝试执行这样的查询,以便它选择当前日期大于 datetime1 且小于 datetime2 的所有数据
SELECT
ID, nvarchar1,
ntext,
datetime1,
datetime2
FROM
TABLEName
WHERE
datetime1 >= @CurrentDate
AND datetime2 <= @CurrentDate
我想制作列参数,例如 @TableName、@CurrentDate、@StartDate、@EndDate
DECLARE @TableName NVARCHAR(100);
SET @TableName = '[Surveys].[dbo].[Table]'
DECLARE @CurrentDate DateTime;
SET @CurrentDate = GETDATE();
DECLARE @StartDate NVARCHAR(100);
SET @StartDate = 'datetime1'
DECLARE @EndDate NVARCHAR(100);
SET @EndDate = 'datetime2'
DECLARE @sql nvarchar(1000)
SET @sql = 'SELECT * FROM ' + @TableName + 'WHERE' + @EndDate + '>=' + @CurrentDate + 'AND' + @StartDatedatetime1 + '<=' + @CurrentDate
EXEC(@sql)
数据将来自 SP 数据源,因此我无法控制列名等,当我创建 SP 列表时,它们会自动分配给该类型的表列,所以这就是我需要列作为参数。
使用上面我认为应该可以工作的代码返回
消息 241,第 16 级,状态 1,第 14 行 从字符串转换日期和/或时间时转换失败。
我做错了什么?
【问题讨论】:
-
那么你的问题是什么?
-
datetime 类型的变量不需要引号。 ICBW。
标签: sql-server tsql variables dynamic-sql