Su fecha es en realidad un valor numérico (flotante o entero), almacenado en una columna de caracteres. Entonces, necesitas convertirlo a un valor numérico (en este caso, a float
) primero, como:
select convert(datetime, CONVERT(float,date_column))
Un valor de 41547.5
dará como resultado:
`2013-10-02 12:00:00`
El argumento de estilo, en tu caso 6
solo es necesario cuando se convierte desde o hacia tipos char. En este caso no es necesario y será ignorado.
NB:El valor flotante es el número de días desde 1900-01-01
.
p.ej. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; lo mismo que select dateadd(day,9.0,'1900-01-01')
lo haría.
La parte decimal del número también equivale a días; entonces 0.5
es medio día / 12 horas.
p.ej. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Aquí nuestra comparación con dateadd no tiene sentido, ya que solo trata con números enteros en lugar de flotantes).