Je probleem is dat je probeert te convert
de numerieke naar een datetime
, en dit werkt gewoon niet.
U moet uw numeric
. omdraaien eerst in een 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 met demo.
Wanneer u een numeriek type probeert te converteren naar een datetime
, SQL Server probeert de numerieke waarde als het aantal dagen toe te voegen aan de datum 01-Jan-1900
. In jouw geval probeert dit miljoenen dagen toe te voegen, en vandaar de overloopfout.
CONVERT
werkt ook prima, als je wilt:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle met demo.