Проблемът ви е, че се опитвате да convert
числото към datetime
, и това просто не работи.
Трябва да завъртите вашия numeric
първо в низ:
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 с демонстрация.
Когато се опитате да преобразувате числов тип в datetime
, SQL Server се опитва да добави числовата стойност като брой дни към датата 01-Jan-1900
. Във вашия случай това се опитва да добави милиони дни и следователно грешката при препълване.
CONVERT
също работи добре, ако предпочитате:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle с демонстрация.