Convert INT naar DATETIME (SQL)

Ik probeer een datum te converteren naar datetime, maar ik krijg fouten. Het datatype waaruit ik converteer is (float,null) en ik wil het graag converteren naar DATETIME.

De eerste regel van deze code werkt prima, maar ik krijg deze fout op de tweede regel:

Rekenkundige overloopfout bij het converteren van expressie naar datatype datetime.

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

Antwoord 1, autoriteit 100%

je moet eerst converteren naar char omdat converteren naar int die dagen toevoegt aan 1900-01-01

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

hier zijn enkele voorbeelden

select CONVERT (datetime,5)

1900-01-06 00:00:00.000

select CONVERT (datetime,20100101)

ontploft, omdat je 20100101 dagen niet kunt optellen bij 01-01-00..je gaat boven de limiet

eerst converteren naar char

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

Antwoord 2, autoriteit 4%

Probeer dit:

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

Antwoord 3

gebruik een where-clausule in dat veld om null- en nulwaarden te negeren

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

Other episodes