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).