I am trying to convert a temporary variable into UTC time and print it using the following,
declare @dt datetime, @dtEnd datetime
set @dt = '2017-04-25' AT TIME ZONE 'UTC' 
set @dtEnd = '2017-04-30' AT TIME ZONE 'UTC' 
select dateadd(day, number, @dt)
from 
    (select distinct number from master.dbo.spt_values
     where name is null
    ) n
where dateadd(day, number, @dt) < @dtEnd
I got this code from the accepted answer here. I am getting an error,
Argument data type varchar is invalid for argument 1 of AT TIME ZONE function.
I am using SQL Server docs to convert from CDT to UTC. Linked answer works great to just print without AT TIME ZONE 'UTC'. 
How can I convert a temporary variable to print in UTC time?
 
    