Dit problem er, at du forsøger at convert
det numeriske til en datetime
, og dette virker bare ikke.
Du skal ændre din numeric
ind i en streng 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 prøver at konvertere en numerisk type til en datetime
, forsøger SQL Server at tilføje den numeriske værdi som antallet af dage til datoen 01-Jan-1900
. I dit tilfælde forsøger dette at tilføje millioner af dage, og dermed overløbsfejlen.
CONVERT
fungerer også fint, hvis du foretrækker det:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle med demo.