Вашата дата всъщност е числова стойност (float или integer), съхранена в колона char. Така че трябва да го преобразувате в числова стойност (в този случай в float
) първо, като:
select convert(datetime, CONVERT(float,date_column))
Стойност 41547.5
ще доведе до:
`2013-10-02 12:00:00`
Аргументът стил във вашия случай 6
е необходимо само при преобразуване от или към char-типове. В този случай не е необходимо и ще бъде игнорирано.
NB:Плаващата стойност е броят дни от 1900-01-01
.
напр. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; същото като select dateadd(day,9.0,'1900-01-01')
бих.
Десетичната част на числото също се равнява на дни; така 0.5
е половин ден / 12 часа.
напр. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Тук нашето сравнение с dateadd няма смисъл, тъй като то се занимава само с цели числа, а не с плаващи числа).