La tua data è in realtà un valore numerico (float o intero), memorizzato in una colonna di caratteri. Quindi, devi convertirlo in un valore numerico (in questo caso, in float
) prima, come:
select convert(datetime, CONVERT(float,date_column))
Un valore di 41547.5
risulterà in:
`2013-10-02 12:00:00`
L'argomento di stile, nel tuo caso 6
è necessario solo durante la conversione da o in tipi char. In questo caso non è necessario e verrà ignorato.
NB:Il valore float è il numero di giorni trascorsi da 1900-01-01
.
per esempio. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; lo stesso di select dateadd(day,9.0,'1900-01-01')
lo farebbe.
Anche la parte decimale del numero corrisponde ai giorni; quindi 0.5
è mezza giornata / 12 ore.
per esempio. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Qui il nostro confronto con dateadd non ha senso, dal momento che si tratta solo di numeri interi anziché di float).