DateTime er ofte repræsenteret som en dagtælling fra en forudbestemt dato (generelt kendt som epoken) på heltalsdelen og procentdelen af dagen, der er forløbet siden midnat på brøkdelen.
SQL Server er ikke undtagelsen fra dette, så konverteringen til Float giver meget mening. Dag 0 er 1. januar 1900 00:00:00 (AFAIK, ikke i nogen bestemt tidszone, så du skal betragte det som "lokal tid").
Så du kan prøve dette:
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
Så for dine resultater er der gået 40183 dage siden 01/01/1900 00:00:00 og 01/07/2010 00:00:00
Præcisering:Unix-lignende systemer bruger en anden tilgang til at gemme dato og klokkeslæt:Sekunder siden Unix-epoken (1. januar 1970 00:00:00 UTC), som er mere kendt som epoketid.
[Rediger]Datoformatet på dette svar blev ændret til formatet ÅÅÅÅMMDD den 20140416, efter nogle nye års erfaring med SQL Server (og som @Damien sagde i sin kommentar) er dette det eneste sikre format.