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