DateTime часто представляется как число дней с заранее определенной даты (обычно известной как эпоха) в целочисленной части, а процентная доля дня, прошедшего с полуночи, в дробной части.
SQL Server не является исключением из этого, поэтому преобразование во Float имеет большой смысл. День 0 - 01 января 1900 00:00:00 (AFAIK, без определенного часового пояса, поэтому вы должны считать это «местным временем»).
Итак, вы можете попробовать это:
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
Итак, для ваших результатов прошло 40183 дня с 01.01.1900 00:00:00 и 01.07.2010 00: 00: 00
Пояснение: Unix-подобные системы используют другой подход для хранения времени: секунды с начала Unix (1 января 1970 г., 00:00:00 UTC), который более известен как время эпохи.
[Изменить]
Формат даты в этом ответе был изменен на формат ГГГГММДД на 20140416, после нескольких новых лет работы с SQL Server (и, как сказал @Damien в своем комментарии), это единственный безопасный формат.