2013-03-21 82 views
0

我有一個具有多個日期時間列的表 - TblDate1TblDate2TblDate3等..日期時間轉換/混合變量

我需要接受一個參數來指定日期列的查詢與另一個日期比較。

這裏是我的查詢嘗試 -

DECLARE @DateColumn nvarchar(128) SET @DateColumn = 'TblDate2' 
DECLARE @DateStart datetime SET @DateStart = DATEADD(d, -7, getdate()) 

EXECUTE sp_executesql 
N'SELECT * FROM MessagesTable WHERE @DateStartIN < @DateColumnIN' 
, N'@DateStartIN datetime, @DateColumnIN nvarchar(128)' 
, @DateStartIN = @DateStart 
, @DateColumnIN = @DateColumn 

返回錯誤 -

Msg 241, Level 16, State 1, Line 1 
Conversion failed when converting date and/or time from character string. 

回答

2

試試這個:

DECLARE @DateColumn VARCHAR(128) SET @DateColumn = 'TblDate2' 
DECLARE @DateStart DATETIME SET @DateStart = DATEADD(d, -7, GETDATE()) 

DECLARE @pvsSQL NVARCHAR(256) 
SET @pvsSQL = 'SELECT * FROM MessagesTable WHERE '+ @DateColumn +' < ''' + CONVERT(VARCHAR, @DateStart) + ''';' 

EXECUTE sp_executesql @pvsSQL