Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como Restar Fechas De Un Sólo Campo De Diferentes Registros

Estas en el tema de Como Restar Fechas De Un Sólo Campo De Diferentes Registros en el foro de SQL Server en Foros del Web. Hola A Todos.. Necesito Realizar La Resta Entre Fechas De Un Sólo Campo Por Ejemplo: Identif.......etapa...............fecha 2008646.....128.........2005-05-03 11:11:40.320 2008646.....128.........2005-05-03 11:51:07.933 2008646.....129.........2005-05-09 16:46:15.777 2013907.....128.........2005-05-20 14:29:24.383 2013907.....128.........2005-05-20 ...
  #1 (permalink)  
Antiguo 09/04/2008, 13:19
 
Fecha de Ingreso: abril-2008
Mensajes: 2
Antigüedad: 16 años
Puntos: 0
Pregunta Como Restar Fechas De Un Sólo Campo De Diferentes Registros

Hola A Todos..
Necesito Realizar La Resta Entre Fechas De Un Sólo Campo Por Ejemplo:
Identif.......etapa...............fecha
2008646.....128.........2005-05-03 11:11:40.320
2008646.....128.........2005-05-03 11:51:07.933
2008646.....129.........2005-05-09 16:46:15.777
2013907.....128.........2005-05-20 14:29:24.383
2013907.....128.........2005-05-20 15:00:17.647
2013907.....128.........2005-05-20 15:00:52.037
2013907.....252.........2007-05-11 13:06:56.943
2018340.....128.........2005-06-06 13:46:35.877
2018340.....128.........2005-06-06 14:03:15.100
2019972.....128.........2005-06-10 12:09:18.697
2019972.....128.........2005-06-10 12:16:46.183

POR EJEMPLO EN ESTOS DATOS NECESITO RESTAR entre las fechas q le pertenecen a una identificación para ver el tiempo q se ha quedado en cada etapa...

si alguien me puede dar una solución...........

saludos

Sergio
  #2 (permalink)  
Antiguo 09/04/2008, 15:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: Como Restar Fechas De Un Sólo Campo De Diferentes Registros

Lo he hecho para MySQL, pero puesto que el SQL es lenguaje general, creo que no tendrás muchas dificultades para adaptarlo en caso de que hubiera que acomodar alguna función.
SELECT f1.fecha, f2.fecha, SEC_TO_TIME( UNIX_TIMESTAMP( f2.fecha ) - UNIX_TIMESTAMP( f1.fecha ) ) AS dif
FROM fechas f1
LEFT JOIN fechas f2 ON f1.id < f2.id
WHERE f1.identificación =2
AND f2.identificación =2
GROUP BY f1.fecha
ORDER BY f1.fecha

Hago un LEFT JOIN pero agrupando por fecha, y luego resto los segundos de la fecha primera de una identificación con la siguiente de esa identificación y ordeno por la fecha; el resultado lo convierto a horas, minutos y segundos. Como las fechas se siguen siempre de menor a mayor creo que no tendrás problemas. Como identificación te he puesto el número 2, pero tú podrás probarlo con tus datos. Adapta los nombres de los campos a los tuyos y prueba

A ver si te sirve la consulta.

Por supuesto, con PHP sería muy fácil, bastaría con cargar los datos en un array y manejarlos..., pero eso es otra cosa.

Última edición por jurena; 10/04/2008 a las 00:45
  #3 (permalink)  
Antiguo 11/04/2008, 17:25
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Como Restar Fechas De Un Sólo Campo De Diferentes Registros

Bueno, esta es mi variante no comprobada:
Código:
SELECT DISTINCT f1.identif, f1.etapa, f1.fecha, DATEDIFF( ss, f1.fecha, f2.fecha ) [dif]
FROM fechas f1
LEFT JOIN fechas f2 ON f1.identif=f2.identif AND f1.id < f2.id
ORDER BY f1.identif, f1.etapa
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:16.