Puedes usar ésta función (La obtuve de aquí mismo pero le he hecho algunos cambios), tal ves sirva de ayuda:
   
Código SQL:
Ver originalCREATE FUNCTION calcularTiempo
(
    @Date1 Datetime,
    @Date2 Datetime,
    @TYPE VARCHAR(MAX)  -- Forma en la que se va a transformar
)                       -- 1: Formato String x horas x minutos x segundos
                        -- 2: Formato Number HH:MM:SS
 
RETURNS VARCHAR(MAX)
AS 
BEGIN
    DECLARE @temp VARCHAR(100)
    DECLARE @horas INT
    DECLARE @minutos INT
    DECLARE @tempMINUTOS INT
    DECLARE @segundos BIGINT
    
    SET @segundos = (
        SELECT
            datediff(SECOND,@Date1, @Date2) AS Segundos
    )
 
    SET @temp ='...'
 
    IF (@segundos < 3600) BEGIN
    
        SET @minutos =  FLOOR(@minutos / 60)
        SET @segundos = @minutos % 60
            --Según el tipo recibido lo formateo de una forma u otra
            IF @TYPE = 1
                SET @temp = '0 Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
            ELSE            
                SET @temp = '00:' + CONVERT(VARCHAR, @minutos) + ':' +  CONVERT(VARCHAR, @segundos)
    END ELSE 
BEGIN 
    SET @horas = FLOOR(@segundos / 3600)
    SET @tempMINUTOS = @segundos % 3600
    SET @minutos = FLOOR(@tempMINUTOS / 60) --MINUTOS FINALES
    SET @segundos = @tempMINUTOS % 60
        --Según el tipo recibido lo formateo de una forma u otra
        IF @TYPE = 1
            SET @temp = CONVERT(VARCHAR, @horas) + ' Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
        ELSE            
            SET @temp = CONVERT(VARCHAR, @horas) + ':' + CONVERT(VARCHAR, @minutos) + ':' + CONVERT(VARCHAR, @segundos) 
END 
    RETURN @temp
END
  
Al final executas asi (Ver diferencia):   
Código SQL:
Ver originalSELECT
dbo.calcularTiempo ('2012-12-02 10:18:22.883','2012-12-03 10:20:43.060',1)
  
o   
Código SQL:
Ver originalSELECT
dbo.calcularTiempo ('2012-12-02 10:18:22.883','2012-12-03 10:20:43.060',2)