create or replace function datediff( p_what in varchar2, 
                                      p_d1   in date, 
                                      p_d2   in date ) return number 
    as 
        l_result    number; 
    begin 
        select (p_d2-p_d1) * 
               decode( upper(p_what), 
                       'DAY', 1, 'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL ) 
        into l_result from dual; 
       return l_result; 
   end; 
   /
This is what I do in Oracle (Courtesy: ASKTOM).
I get either days, hours, minutes or seconds in difference.
In MS SQL, either 
PRINT DATEDIFF(DAY, '1/1/2011', '3/1/2011')
This gives the number of times the midnight boundary is crossed between the two dates. You may decide to need to add one to this if you're including both dates in the count - or subtract one if you don't want to include either date.
OR 
DECLARE @startdate datetime2 = '2007-05-05 12:10:09.3312722';
DECLARE @enddate datetime2 = '2009-05-04 12:10:09.3312722'; 
SELECT DATEDIFF(day, @startdate, @enddate);
Using this you can manipulate.