You don't need to explicitly convert it. Just get the format to a string of YYYYMMDD, which is always a valid date/datetime format:
SELECT DATEADD(HOUR, @hour, CAST(@date AS varchar(8)))
SQL DBA,SQL Server MVP('07, '08, '09)
Prosecutor James Blackburn, in closing argument in the "Fatal Vision" murders trial: "If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them."