Váš problém je, že se pokoušíte convert
číslo na datetime
a tohle prostě nefunguje.
Musíte otočit numeric
nejprve do řetězce:
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 s ukázkou.
Když se pokusíte převést číselný typ na datetime
, SQL Server se pokusí přidat číselnou hodnotu jako počet dní k datu 01-Jan-1900
. Ve vašem případě se to pokouší přidat miliony dní, a proto došlo k chybě přetečení.
CONVERT
funguje také dobře, pokud chcete:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle s ukázkou.