Il problema è che stai cercando di convert il numero in un datetime , e questo non funziona.
Devi trasformare il tuo numeric prima in una stringa:
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 con demo.
Quando provi a convertire un tipo numerico in un datetime , SQL Server tenta di aggiungere il valore numerico come numero di giorni alla data 01-Jan-1900 . Nel tuo caso questo sta cercando di aggiungere milioni di giorni, e quindi l'errore di overflow.
CONVERT funziona anche bene, se preferisci:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle con demo.