You issue is that you're trying to convert
the numeric to a datetime
, and this just isn't working.
You need to turn your numeric
into a string first:
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 with demo.
When you try and convert a numeric type to a datetime
, SQL Server tries to add the numeric value as the number of days to the date 01-Jan-1900
. In your case this is trying to add millions of days, and hence the overflow error.
CONVERT
works fine, too, if you prefer:
select yr_mnth_dt = convert(datetime, convert(char(8), @yr_mnth_dt));
SQL Fiddle with demo.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…