none
Resta entre 2 horas en sql server

    Question

  • Hola, buenos dias, deseo restar 2 horas (una hora es de un campo de mi tabla y la otra hora es la hora actual), y la diferencia que me salga en minutos.

    He intentado de varias formas pero no consiguo hacerlo.

    Culaquier ayuda que me puedan brindar estare muy agradecido


    • Edited by JCORBETTO Tuesday, November 20, 2012 3:55 PM
    Tuesday, November 20, 2012 3:50 PM

Answers

  • Hola Jorge, lo que necesitas puedes lograrlo con DATEDIFF() de la siguiente manera, observa:

    declare @horaActual as time
    declare @fecha2 as time
    
    set @horaActual = GETDATE()
    set @fecha2 = '09:00:00'
    
    select @horaActual as horaActual , @fecha2 as fecha2, DATEDIFF( MI , @fecha2 , @horaActual )  as diferencia

    Prueba y nos dices como te va...

    SALUDOS!


    Sergio Sánchez Arias

    • Marked as answer by JCORBETTO Tuesday, November 20, 2012 7:00 PM
    Tuesday, November 20, 2012 3:55 PM
  • Amigo, ese resultado es en minutos, el detalle es que estás obteniendo la diferencia entre un TIME y un DATETIME , observa el siguiente ejemplo: 

    declare @horaActualTime as time
    declare @horaActualDateTime as datetime
    declare @fecha2 as time
    
    set @horaActualDateTime = GETDATE()
    set @horaActualTime = @horaActualDateTime
    set @fecha2 = '11:01:00'
    
    --convirtiendo tu fecha en datetime
    select CAST( @fecha2 as datetime ),DATEDIFF( MI , @fecha2 , @horaActualDateTime )  as diferenciaDatetime, DATEDIFF( MI , @fecha2 , @horaActualTime )  as diferenciaTime

    Estas obteniendo la diferencia desde 1900-01-01 11:01:00...

    Continuamos apoyándote.

    SALUDOS!


    Sergio Sánchez Arias


    Tuesday, November 20, 2012 4:30 PM

All replies

  • Hola Jorge, lo que necesitas puedes lograrlo con DATEDIFF() de la siguiente manera, observa:

    declare @horaActual as time
    declare @fecha2 as time
    
    set @horaActual = GETDATE()
    set @fecha2 = '09:00:00'
    
    select @horaActual as horaActual , @fecha2 as fecha2, DATEDIFF( MI , @fecha2 , @horaActual )  as diferencia

    Prueba y nos dices como te va...

    SALUDOS!


    Sergio Sánchez Arias

    • Marked as answer by JCORBETTO Tuesday, November 20, 2012 7:00 PM
    Tuesday, November 20, 2012 3:55 PM
  • Gracias Sergio por responder, probe tu codigo haciendole algunos cambios:

    select CONVERT(nvarchar(5), GETDATE(), 108) , cast(hora_entrada as varchar(5)) as hora_entrada, DATEDIFF( MI , '11:01' , GETDATE())  as diferencia from reg_asistencia

    CONVERT(nvarchar(5), GETDATE(), 108) con esto solo capturo la hora del sistema en horas y minutos solamente, ahora a ejecutar toda la consulta me da como resultado: 59372654 pero no se como transformarlo solamente a minutos

    Nota: al ejecutar la consulta los parametros fueron 

    CONVERT(nvarchar(5), GETDATE(), 108) //dio como resultado 11:15(hora del sistema)

    '11:01' hora de mi tabla

    Tuesday, November 20, 2012 4:18 PM
  • Amigo, ese resultado es en minutos, el detalle es que estás obteniendo la diferencia entre un TIME y un DATETIME , observa el siguiente ejemplo: 

    declare @horaActualTime as time
    declare @horaActualDateTime as datetime
    declare @fecha2 as time
    
    set @horaActualDateTime = GETDATE()
    set @horaActualTime = @horaActualDateTime
    set @fecha2 = '11:01:00'
    
    --convirtiendo tu fecha en datetime
    select CAST( @fecha2 as datetime ),DATEDIFF( MI , @fecha2 , @horaActualDateTime )  as diferenciaDatetime, DATEDIFF( MI , @fecha2 , @horaActualTime )  as diferenciaTime

    Estas obteniendo la diferencia desde 1900-01-01 11:01:00...

    Continuamos apoyándote.

    SALUDOS!


    Sergio Sánchez Arias


    Tuesday, November 20, 2012 4:30 PM
  • Gracias Sergio, ya lo modifique y me funciono, te lo agradezco mucho.

    Saludos y gracias

    Tuesday, November 20, 2012 6:59 PM