Обратите внимание, что DATEDIFF касается только части даты. Если время включает, преобразованное вычитание может дать лучшие результаты.
DECLARE @start DATETIME
DECLARE @end DATETIME
SET @start = '20090514 00:00:00'
SET @end = '20090514 23:59:59'
PRINT CONVERT(FLOAT, (@end-@start)) -- 0.999988
PRINT DATEDIFF(DAY,@start,@end) -- 0