On the first look, replace:
set @query='select into table1
where datediff(d,table1.colDate,@TradeDate)>0'
with:
set @query='select Field1, Field2, ..., FieldN
into table1
where datediff(d,table1.colDate,' + @TradeDate + ')>0'
On the other hand, why to build query as variable type string? Just exec statement as:
select Field1, Field2, ..., FieldN
into table1
where datediff(d,table1.colDate, @TradeDate)>0
For further information, please see:
INTO Clause[
^]