0
我寫負責歸檔數據的應用程序,我們有一個數據庫表變量傳遞到SQL Server存儲過程,where子句
Id | TableName | ColumnName | RetentionAmountInDays
1 | DeviceData | MetricTime | 3
所以,當面對這種配置的配置,我應該歸檔所有MetricTime值在3天前的DeviceData表中的數據。
的原因,我此動態操作的方式是表名和列名不同(會有多行)
對於每個配置該存儲過程被稱爲
CREATE PROCEDURE GetDynamicDataForArchive
@TableName nvarchar(100),
@ColumnName nvarchar(100),
@OlderThanDate datetime2(7)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql nvarchar(1000);
SET @sql = 'SELECT * FROM ' + @TableName + ' WHERE ' + @ColumnName + ' < @OlderThanDate';
exec sp_executesql @sql;
END
和示例EXEC線
exec dbo.GetDynamicDataForArchive 'DeviceData', 'MetricTime', '2017-04-16 20:29:29.647'
這導致:
Conversion failed when converting date and/or time from character string.
因此,我在datetime2中傳遞的方式或我如何構成where子句的方式都是如此。