Convert INT to DATETIME (SQL)

I am trying to convert a date to datetime but am getting errors. The datatype I'm converting from is (float,null) and I'd like to convert it to DATETIME.

The first line of this code works fine, but I get this error on the second line:

Arithmetic overflow error converting expression to data type datetime.

CAST(CAST( rnwl_efctv_dt AS INT) AS char(8)), CAST(CAST( rnwl_efctv_dt AS INT) AS DATETIME), 
1

3 Answers

you need to convert to char first because converting to int adds those days to 1900-01-01

select CONVERT (datetime,convert(char(8),rnwl_efctv_dt )) 

here are some examples

select CONVERT (datetime,5) 

1900-01-06 00:00:00.000

select CONVERT (datetime,20100101) 

blows up, because you can't add 20100101 days to 1900-01-01..you go above the limit

convert to char first

declare @i int select @i = 20100101 select CONVERT (datetime,convert(char(8),@i)) 
2

Try this:

select CONVERT(datetime, convert(varchar(10), 20120103)) 

use a where clause on that field to ignore nulls and zero values

update table set BDOS= CONVERT(datetime, convert(char(8), field)) where isnull(field,0)<>0 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like