Ver Mensaje Individual
  #8 (permalink)  
Antiguo 13/01/2014, 15:31
Cvilla90
 
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 14 años
Puntos: 3
Respuesta: Obtener diferencia en horas minutos y segundos SQL

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 original
  1. CREATE FUNCTION calcularTiempo
  2. (
  3.     @Date1 Datetime,
  4.     @Date2 Datetime,
  5.     @TYPE VARCHAR(MAX)  -- Forma en la que se va a transformar
  6. )                       -- 1: Formato String x horas x minutos x segundos
  7.                         -- 2: Formato Number HH:MM:SS
  8.  
  9. RETURNS VARCHAR(MAX)
  10. AS
  11. BEGIN
  12.     DECLARE @temp VARCHAR(100)
  13.     DECLARE @horas INT
  14.     DECLARE @minutos INT
  15.     DECLARE @tempMINUTOS INT
  16.     DECLARE @segundos BIGINT
  17.    
  18.     SET @segundos = (
  19.         SELECT
  20.             datediff(SECOND,@Date1, @Date2) AS Segundos
  21.     )
  22.  
  23.     SET @temp ='...'
  24.  
  25.     IF (@segundos < 3600) BEGIN
  26.    
  27.         SET @minutos =  FLOOR(@minutos / 60)
  28.         SET @segundos = @minutos % 60
  29.             --Según el tipo recibido lo formateo de una forma u otra
  30.             IF @TYPE = 1
  31.                 SET @temp = '0 Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
  32.             ELSE            
  33.                 SET @temp = '00:' + CONVERT(VARCHAR, @minutos) + ':' +  CONVERT(VARCHAR, @segundos)
  34.     END ELSE
  35. BEGIN
  36.     SET @horas = FLOOR(@segundos / 3600)
  37.     SET @tempMINUTOS = @segundos % 3600
  38.     SET @minutos = FLOOR(@tempMINUTOS / 60) --MINUTOS FINALES
  39.     SET @segundos = @tempMINUTOS % 60
  40.         --Según el tipo recibido lo formateo de una forma u otra
  41.         IF @TYPE = 1
  42.             SET @temp = CONVERT(VARCHAR, @horas) + ' Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
  43.         ELSE            
  44.             SET @temp = CONVERT(VARCHAR, @horas) + ':' + CONVERT(VARCHAR, @minutos) + ':' + CONVERT(VARCHAR, @segundos)
  45. END
  46.     RETURN @temp
  47. END
Al final executas asi (Ver diferencia):
Código SQL:
Ver original
  1. SELECT
  2. dbo.calcularTiempo ('2012-12-02 10:18:22.883','2012-12-03 10:20:43.060',1)

o
Código SQL:
Ver original
  1. SELECT
  2. dbo.calcularTiempo ('2012-12-02 10:18:22.883','2012-12-03 10:20:43.060',2)

Última edición por gnzsoloyo; 13/01/2014 a las 17:14