日期时间转换/混合变量
问题描述:
我有一个具有多个日期时间列的表 - TblDate1
,TblDate2
,TblDate3
等..日期时间转换/混合变量
我需要接受一个参数来指定日期列的查询与另一个日期比较。
这里是我的查询尝试 -
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.
答
试试这个:
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