DateTime jest często reprezentowany jako liczba dni od wstępnie określonej daty (zazwyczaj znanej jako epoka) w części całkowitej i jako procent dnia, który upłynął od północy w części ułamkowej.
SQL Server nie jest tu wyjątkiem, dlatego konwersja do Float ma sens. Dzień 0 to 01 stycznia 1900 00:00:00 (AFAIK, bez określonej strefy czasowej, więc należy to uznać za „czas lokalny”).
Możesz więc spróbować tego:
declare @ADate DateTime;
set @ADate = '19000101 00:00:00';
select CONVERT(float, @ADate); --should print 0
set @ADate = '19000101 12:00:00';
select CONVERT(float, @ADate); --should print 0.5
set @ADate = '19001231 06:00:00';
select CONVERT(float, @ADate); --should print 364.25
Tak więc dla Twoich wyników minęło 40183 dni od 01.01.2001 00:00:00 do 01.07.2010 00:00:00
Wyjaśnienie:Systemy uniksowe używają innego podejścia do przechowywania dat i godzin:Sekundy od epoki Uniksa (1 stycznia 1970 00:00:00 UTC), co jest bardziej znane jako czas epoki.
[Edytuj]Format daty w tej odpowiedzi został zmieniony na format RRRRMMDD 20140416, po kilku latach doświadczeń z SQL Server (i jak powiedział @Damien w swoim komentarzu) jest to jedyny bezpieczny format.