Ihr Problem ist, dass Sie versuchen, convert
die Zahl zu einem datetime
, und das funktioniert einfach nicht.
Sie müssen Ihre numeric
drehen zuerst in einen String:
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 mit Demo.
Wenn Sie versuchen, einen numerischen Typ in einen datetime
zu konvertieren , versucht SQL Server, den numerischen Wert als Anzahl von Tagen zum Datum 01-Jan-1900
hinzuzufügen . In Ihrem Fall wird versucht, Millionen von Tagen hinzuzufügen, und daher der Überlauffehler.
CONVERT
funktioniert auch gut, wenn Sie es vorziehen:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle mit Demo.