none
Concatenación de Fechas y Horas diferentes. RRS feed

  • Pregunta

  • Hola buenos días a todos, alguien podría hacer en ejemplo de concatenación, utilizando campos distintos (Fecha Inicio, Hora inicio y sacar la diferencia del tiempo, utilizando Fecha final , Hora final, Resultado...

    ::EJEMPLO::

    Fecha inicio: 23/06/2016 (Campo DateTime)

    Hora inicio: 05:00 (Campo Varchar(5))

    Fecha final: 24/06/2016 (Campo DateTime)

    Hora final: 02:35 (Campo Varchar(5))

    Resultado: 21:35 (Campo Varchar(6))

    agradezco la colaboración, un saludo y gracias.



    • Editado LMDP_1978 sábado, 25 de junio de 2016 13:39 Error
    sábado, 25 de junio de 2016 13:01

Respuestas

  • LMDP_1978,

    ¿Qué versión del motor de SQL Server tienes? Imagino que tienes una versión inferior a SQL Server 2008 ya que no haces uso del tipo de dato time para almacenar valores de tiempo, ¿verdad?

    --Declarar variables según ejemplo
    DECLARE @FechaInicio datetime = '20160623';
    DECLARE @HoraInicio varchar(5) = '05:00';
    DECLARE @FechaFin datetime = '20160624';
    DECLARE @HoraFin varchar(5) = '02:35';
    
    --Agregar minutos y horas a un tipo datetime
    SET @FechaInicio = DATEADD(MINUTE, (CONVERT(tinyint, LEFT(@HoraInicio, 2)) * 60) +  CONVERT(tinyint, RIGHT(@HoraInicio, 2)), @FechaInicio);
    SET @FechaFin = DATEADD(MINUTE, (CONVERT(tinyint, LEFT(@HoraFin, 2)) * 60) +  CONVERT(tinyint, RIGHT(@HoraFin, 2)), @FechaFin);
    
    --Obtener diferencia en minutos entre ambas fechas
    DECLARE @DiferenciaMinutos int = DATEDIFF(MINUTE, @FechaInicio, @FechaFin);
    
    --Mostrar diferencia en formato hh:mm
    SELECT CONVERT(varchar(10), @DiferenciaMinutos / 60) + ':' + CONVERT(varchar(10), @DiferenciaMinutos % 60);

    En caso tengas una versión igual o superior a SQL Server 2008 puedes castear el tiempo al tipo time(n).

    • Marcado como respuesta José De Alva jueves, 30 de junio de 2016 16:19
    sábado, 25 de junio de 2016 14:55