Din dato er faktisk en numerisk værdi (float eller heltal), gemt i en char-kolonne. Så du skal konvertere den til en numerisk værdi (i dette tilfælde til float
) først som:
select convert(datetime, CONVERT(float,date_column))
En værdi på 41547.5
vil resultere i:
`2013-10-02 12:00:00`
Stilargumentet, i dit tilfælde 6
er kun nødvendigt ved konvertering fra eller til char-typer. I dette tilfælde er det ikke nødvendigt og vil blive ignoreret.
NB:Floatværdien er antallet af dage siden 1900-01-01
.
for eksempel. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; det samme som select dateadd(day,9.0,'1900-01-01')
ville.
Decimaldelen af tallet er også lig med dage; altså 0.5
er en halv dag / 12 timer.
for eksempel. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Her giver vores sammenligning med dateadd ikke mening, da det kun handler om heltal i stedet for flydende).