Twoja data jest w rzeczywistości wartością liczbową (zmiennoprzecinkową lub całkowitą), przechowywaną w kolumnie znaków. Musisz więc przekonwertować go na wartość liczbową (w tym przypadku na float
) najpierw, jak:
select convert(datetime, CONVERT(float,date_column))
Wartość 41547.5
spowoduje:
`2013-10-02 12:00:00`
Argument stylu, w twoim przypadku 6
jest konieczne tylko podczas konwersji z lub na typy znaków. W takim przypadku nie jest to potrzebne i zostanie zignorowane.
Uwaga:wartość zmiennoprzecinkowa to liczba dni od 1900-01-01
.
np. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; to samo co select dateadd(day,9.0,'1900-01-01')
zrobiłby.
Część dziesiętna liczby to również dni; więc 0.5
to pół dnia / 12 godzin.
np. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Tutaj nasze porównanie z dateadd nie ma sensu, ponieważ dotyczy to tylko liczb całkowitych, a nie zmiennoprzecinkowych).