Uw datum is eigenlijk een numerieke waarde (float of integer), opgeslagen in een char-kolom. Je moet het dus converteren naar een numerieke waarde (in dit geval naar float
) eerst, zoals:
select convert(datetime, CONVERT(float,date_column))
Een waarde van 41547.5
zal resulteren in:
`2013-10-02 12:00:00`
Het stijlargument, in jouw geval 6
is alleen nodig bij het converteren van of naar char-types. In dit geval is het niet nodig en wordt het genegeerd.
NB:De float-waarde is het aantal dagen sinds 1900-01-01
.
bijv. select convert(datetime, CONVERT(float,9.0))
=> 1900-01-10 00:00:00
; hetzelfde als select dateadd(day,9.0,'1900-01-01')
zou.
Het decimale deel van het getal komt ook overeen met dagen; dus 0.5
is een halve dag / 12 uur.
bijv. select convert(datetime, CONVERT(float,.5))
=> 1900-01-01 12:00:00
. (Hier is onze vergelijking met dateadd niet logisch, aangezien dat alleen gaat over gehele getallen in plaats van floats).