Votre problème est que vous essayez de convert le numérique à un datetime , et cela ne fonctionne tout simplement pas.
Vous devez transformer votre numeric dans une chaîne d'abord :
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 avec démo.
Lorsque vous essayez de convertir un type numérique en un datetime , SQL Server essaie d'ajouter la valeur numérique comme nombre de jours à la date 01-Jan-1900 . Dans votre cas, cela essaie d'ajouter des millions de jours, et donc l'erreur de débordement.
CONVERT fonctionne bien aussi, si vous préférez :
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle avec démo.