Vaše datum je ve skutečnosti číselná hodnota (plovoucí nebo celé číslo), uložená ve sloupci char. Musíte ji tedy převést na číselnou hodnotu (v tomto případě na float
) nejprve jako:
select convert(datetime, CONVERT(float,date_column))
Hodnota 41547.5
výsledkem bude:
`2013-10-02 12:00:00`
Argument stylu, ve vašem případě 6
je nutné pouze při převodu z nebo na typy znaků. V tomto případě to není potřeba a bude ignorováno.
Poznámka:Hodnota float je počet dní od 1900-01-01
.
např. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; stejné jako select dateadd(day,9.0,'1900-01-01')
by.
Desetinná část čísla se také rovná dnům; takže 0.5
je půl dne / 12 hodin.
např. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Tady naše srovnání s dateadd nedává smysl, protože se zabývá pouze celými čísly, nikoli plovoucími).