declare @tablename varchar(50) select @tablename = 'test' declare @rowName varchar(50) select @rowName = 'date1' declare @n int declare @nv varchar(50) select @n = 1 declare @flag varchar(50) select @flag = 'dd' declare @ntime datetime declare @ntimev varchar(50) select @ntime= getdate() select @ntime declare @sql varchar(888) declare @dtime datetime select @n = @n - 1 select @n = -@n select @nv = convert(varchar(50),@n) select @ntimev = convert(varchar(50),@ntime) /*select @sql = ' select @dtime = dateadd('+@flag+','+@nv+','''+@ntimev+''') ' select @sql exec (@sql)*/ select @dtime = dateadd(dd,0,'1 2 2012 8:08PM') --上一句的结果 select @dtime = convert(varchar(50),datepart(yy,@dtime))+'-'+convert(varchar(50),datepart(mm,@dtime))+'-'+convert(varchar(50),datepart(dd,@dtime)) select @dtime select @sql = 'select * from '+@tablename+' where date1 < '''+convert(varchar(50),@dtime)+'''' select @sql exec (@sql)