SQL - Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

 
Vista:
Imágen de perfil de Rubén

Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

Publicado por Rubén (12 intervenciones) el 22/05/2015 20:05:42
Necesito hacer una consulta donde al mostrar el resultado me diga la diferencia de tiempos entre una fecha y otra.

Por ejemplo. Tengo una tabla de actividades del taller de la empresa donde le dan servicio a transportes. En esta tabla hay una fecha y hora de inicio (separadas en diferentes columnas), también una fecha y hora de fin (igual separadas en columna) de alguna actividad.

Lo que necesito, es tomar fecha y hora de inicio y mostrarlo en una misma columna, igualmente tomar fecha y hora de fin y mostrarlo en otra columna, al final hacer una comparación entre ambos resultados y mostrar en minutos el tiempo que tomo realizar dicha actividad.

Agradezco de antemano la ayuda que puedan brindarme. Saludos.!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

Publicado por leonardo_josue (1173 intervenciones) el 22/05/2015 20:39:44
Hola Rubén:

No nos dices con qué DBMS estás trabajando, por lo tanto es complicado darte una respuesta puntual ya que el manejo de fechas es distinto entre cada uno de los distintos motores. La mayoría de los DBMS's manejan funciones específicas para esto que pides, MySQL por ejemplo maneja las funciones DATEDIFF y TIMEDIFF[ para encontrar las diferencias entre fechas y horas respectivamente,

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

Es cuestión de que investigues en la documentación oficial del manejador que estés utilizando qué alternativas existen para este tipo de operaciones.

En algunos casos, basta con que hagas una diferencia aritmética entre fechas, es decir algo así:

1
SELECT fechafinal - fechainicial FROM tabla;

Sin embargo, te vuelvo a comentar, cada uno maneja una forma distinta para el manejo de fechas. Pregúntale a SAN GOOGLE, el generalmente tiene la respuesta para todos las las preguntas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Rubhenn

Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

Publicado por Rubhenn (12 intervenciones) el 22/05/2015 20:45:35
Disculpa estoy utilizando SQL v6.5.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

Publicado por Rafael (111 intervenciones) el 09/06/2015 10:02:29
Partire de la suposicion que los campos son VARCHAR... Ya luego si no es asi ajusta tu..

1
2
3
4
SELECT CONVERT(VARCHAR, CAST(FECHA_INICIO + ' ' + HORA_INICIO, DATETIME)) INICIO
     , CONVERT(VARCHAR, CAST(FECHA_FIN + ' ' + HORA_FIN, DATETIME)) FIN
     , CAST(FECHA_FIN + ' ' + HORA_FIN, DATETIME) - CAST(FECHA_INICIO + ' ' + HORA_INICIO, DATETIME) TIEMPO_TRANSCURRIDO
FROM   TABLA_A
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Rubhenn

Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

Publicado por Rubhenn (12 intervenciones) el 09/06/2015 17:36:24
Muchas gracias Rafael, disculpa que no haya mencionado que ya habia encontrado la solución.

Aprecio tu ayuda..de hecho voy a comparar lo que ya hice con esto, y valorare cual me sirve más.

Saludos.!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

Publicado por xve (284 intervenciones) el 09/06/2015 20:47:24
Hola Rubhenn, nos puedes compartir la solución que encontraste?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rubhenn

Unir dos columnas de una misma tabla y mostrar diferencia entre Inicio y Fin de un evento

Publicado por Rubhenn (12 intervenciones) el 09/06/2015 23:50:01
Esta es parte de mi SP..espero se entienda..xD..Saludos.!!! Lo realice con tablas temporales debido a que esto se implemento en otro sistema y pues como es obvio algunos campos y tablas cambian.!!

select 'ORDEN DE SERVICIO', 'UNIDAD', 'KMS', 'FECHA DE ENTRADA DEL AUTOBUS','FECHA DE SALIDA DEL AUTOBUS', 'SERVICIO', 'MECANICO', 'FECHA INICIO', 'HORA INICIO', 'FECHA FIN', 'HORA FIN', 'TIEMPO TOTAL', 'OBSERVACIONES'

select e.ident, u.unidad, e.kms, convert(char(10), dateadd(dd, 0, e.FecEnt), 103), convert(char(10), dateadd(dd, 0, e.FecSal), 103), c.concepto, us.nombre, convert(char(10), dateadd(dd, 0, aclmin.FchIni), 103), aclmin.HorIni, convert(char(10), dateadd(dd, 0, aclmin.FchFin), 103), aclmax.HorFin, acti.TIEMPO, isnull(acd.comentario, '')
from ActividadConcepto ac (nolock)
inner join actividadconceptoestatus ace (nolock) on ac.estatus = ace.estatus
inner join ActividadConceptoTipoServicio acts (nolock) on acts.tiposervicio = ac.tiposervicio
inner join conceptos c (nolock) on c.idcpto = ac.idcpto
inner join unidades u (nolock) on ac.idunidad = u.idunidad
inner join usuarios us (nolock) on us.id = ac.idmecanico
inner join entradas e (nolock) on e.ident = ac.ident
inner join #ActTiempos acti (nolock) on ac.IdActividad = acti.IdActividad
left join ActividadConceptoDet acd (nolock) on acd.idactividad = ac.idactividad
left join #primeros p (nolock) on p.idactividad = ac.idactividad
left join #ultimos ul (nolock) on ul.idactividad = ac.idactividad
left join actividadconceptolog aclmin (nolock) on aclmin.idaclg = p.idaclg
left join actividadconceptolog aclmax (nolock) on aclmax.idaclg = ul.idaclg
where e.sucursal = @TallSUCURSAL
and AC.FECHA = @FchaFECHA
order by ac.IdActividad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar