none
CALCULAR TIEMPO RRS feed

  • Pregunta

  • como apartir de estos dos campos cuya tipo es FECHA_APERTURA Date y HORA_APERTURA time(7) calcular el tiempo transcurrido hasta LA FECHA ALTUAL, GETDATE()
    Luis Y. Ramirez Software Developer "Recuerda marcar la repuesta como VALIDA si te ha ayudado"
    miércoles, 10 de agosto de 2011 17:34

Respuestas

  • Quizá esto te deje más claro lo que te han explicado ya los compañeros.
    declare @f date
    declare @t time
    declare @dt datetime
    set @f='20100101';
    set @t='15:06:36.976'
    
    set @dt=cast(@f as datetime)+ cast(@t as datetime);
    select @dt
    select DATEDIFF(hh,@dt,getdate()) -- diferencia en horas
    select DATEDIFF(dd,@dt,getdate()) -- diferencia en dias


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    jueves, 11 de agosto de 2011 9:23
    Moderador

Todas las respuestas

  • en una variable tipo DATETIME2, concatena los strings de los campos FECHA_APERTURA y HORA_APERTURA

    cast

    (FECHA_APERTURA as varchar(10))+' '+cast(HORA_APERTURA as varchar(15

    ))

    Y luego, usas 

    DATEDIFF

     

     para calcular el tiempo transcurrido que necesites...

    Saludos


    Fredy R.(Co)
    miércoles, 10 de agosto de 2011 18:31
  • pero fecha_apertura no es varchar es date y hora_apertura es time(7)
    Luis Y. Ramirez Software Developer "Recuerda marcar la repuesta como VALIDA si te ha ayudado"
    miércoles, 10 de agosto de 2011 18:48
  • Por eso se usa el CAST....

    SAludos!

     


    Fredy R.(Co)
    miércoles, 10 de agosto de 2011 18:54
  • Hola.

    Aunque la respuesta ya te la han dado, indicar el problema de diseño. Se hace uso de tipos de datos que permiten guardar de forma independiente la fecha y la hora pero luego se precisa juntarlos para los cálculos, lo que entre otras cosas, dará al traste con cualquier indexación eficaz que se quiera colocar a las consultas.

    Usar dos campos para la fecha y la hora cuando luego los computarás juntos no tiene mucho sentido, como estás viendo. Si te es posible, usa un único campo en el que guardar la fecha y la hora, de tipo datetime, por ejemplo. Presentarlos luego en dos campos es trivial. Si no te es posible, entonces tendrás que seguir haciendo arreglos de este estilo.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 11 de agosto de 2011 9:19
    Moderador
  • Quizá esto te deje más claro lo que te han explicado ya los compañeros.
    declare @f date
    declare @t time
    declare @dt datetime
    set @f='20100101';
    set @t='15:06:36.976'
    
    set @dt=cast(@f as datetime)+ cast(@t as datetime);
    select @dt
    select DATEDIFF(hh,@dt,getdate()) -- diferencia en horas
    select DATEDIFF(dd,@dt,getdate()) -- diferencia en dias


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    jueves, 11 de agosto de 2011 9:23
    Moderador
  • Hola.

    ¿Resolvimos tu duda? ¿Puedes marcar la respuesta o respuestas que te sirvieron para dar así el hilo por terminado?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    martes, 16 de agosto de 2011 9:32
    Moderador