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 в коментара си) това е единственият безопасен формат.