Ditt datum är faktiskt ett numeriskt värde (float eller heltal), lagrat i en kolumn för tecken. Så du måste konvertera det till ett numeriskt värde (i det här fallet till float
) först, som:
select convert(datetime, CONVERT(float,date_column))
Ett värde på 41547.5
kommer att resultera i:
`2013-10-02 12:00:00`
Stilargumentet, i ditt fall 6
är endast nödvändigt vid konvertering från eller till char-typer. I det här fallet behövs det inte och kommer att ignoreras.
OBS:Flytvärdet är antalet dagar sedan 1900-01-01
.
t.ex. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; samma som select dateadd(day,9.0,'1900-01-01')
skulle.
Den decimala delen av talet är också lika med dagar; alltså 0.5
är en halv dag / 12 timmar.
t.ex. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Här är vår jämförelse med dateadd inte vettig, eftersom det bara handlar om heltal snarare än flytande).