Problemet är att du försöker convert det numeriska till en datetime , och det här fungerar bara inte.
Du måste ändra din numeric i en sträng först:
declare @yr_mnth_dt as numeric;
set @yr_mnth_dt = 20130822;
select yr_mnth_dt = cast(cast(@yr_mnth_dt as char(8)) as datetime);
SQL Fiddle med demo.
När du försöker konvertera en numerisk typ till en datetime , SQL Server försöker lägga till det numeriska värdet som antalet dagar till datumet 01-Jan-1900 . I ditt fall försöker detta lägga till miljontals dagar, och därav överflödesfelet.
CONVERT fungerar också bra, om du föredrar:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle med demo.