• This should help you

    DECLARE@table TABLE

    (

    IDINT,

    StartDateDATETIME,

    EndDateDATETIME

    )

    INSERT@table( ID, StartDate, EndDate )

    SELECT1, '2013-02-17 10:33:10', '2013-02-17 20:14:40' UNION ALL

    SELECT1, '2013-02-13 12:42:55', '2013-02-14 14:30:50' UNION ALL

    SELECT1, '2013-02-12 15:04:32', '2013-02-15 12:22:25' UNION ALL

    SELECT1, '2013-02-16 20:08:18', '2013-02-18 02:10:10'

    SELECTT.ID, T.StartDate, T.EndDate,

    CASE

    WHEN DATEADD( DAY, DATEDIFF( DAY, T.StartDate, T.EndDate ), T.StartDate ) <= T.EndDate

    THEN DATEDIFF( DAY, T.StartDate, T.EndDate )

    ELSE DATEDIFF( DAY, T.StartDate, T.EndDate ) - 1

    END + --====================Gives you the days

    (

    CASE

    WHEN DATEADD( MINUTE, DATEDIFF( MINUTE, T.StartDate, T.EndDate ), T.StartDate ) <= T.EndDate

    THEN DATEDIFF( MINUTE, T.StartDate, T.EndDate )

    ELSE DATEDIFF( MINUTE, T.StartDate, T.EndDate ) - 1

    END % ( 60 * 24 )

    ) / 1440.00 AS Result --===============Gives you the hours in decimals

    FROM@table AS T

    Edit: Added some comments and changed the query( "<" condition changed to "<=" )


    Kingston Dhasian

    How to post data/code on a forum to get the best help - Jeff Moden
    http://www.sqlservercentral.com/articles/Best+Practices/61537/