Sua data é na verdade um valor numérico (float ou integer), armazenado em uma coluna char. Então, você precisa convertê-lo para um valor numérico (neste caso, para
float
) primeira curtida:select convert(datetime, CONVERT(float,date_column))
Um valor de
41547.5
vai resultar em:`2013-10-02 12:00:00`
O argumento de estilo, no seu caso
6
só é necessário ao converter de ou para char-types. Neste caso não é necessário e será ignorado. NB:O valor float é o número de dias desde
1900-01-01
. por exemplo.
select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; o mesmo que select dateadd(day,9.0,'1900-01-01')
gostaria. A parte decimal do número também equivale a dias; então
0.5
é meio dia / 12 horas. por exemplo.
select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Aqui nossa comparação com dateadd não faz sentido, pois lida apenas com inteiros em vez de floats).