Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Arithmetischer Überlauffehler beim Konvertieren des Ausdrucks in den Datentyp datetime. (während Datum und Uhrzeit angezeigt werden..)

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.