Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/07/2012, 08:31
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Cálculo a partir de fila actual y siguiente

Hola mastermdq:

Hay varias formas de resolver esta consulta, una de ellas sería con una subconsulta, comparando cada registro y obteniendo en una subconsulta LA MINIMA FECHA de los registros restantes, donde la fecha SEA MAYOR a la fecha que estás analizando. Supongamos que tienes los siguientes datos:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM fechas;
  2. +------+---------------------+
  3. | id   | fecha               |
  4. +------+---------------------+
  5. |    1 | 2012-07-16 09:16:00 |
  6. |    2 | 2012-07-16 13:22:00 |
  7. |    3 | 2012-07-16 17:51:00 |
  8. |    4 | 2012-07-17 01:38:00 |
  9. |    5 | 2012-07-17 03:45:00 |
  10. +------+---------------------+
  11. 5 rows in set (0.00 sec)

Tendrías que hacer algo como esto:

Código:
SELECCIONAR 
   los campos de la tabla fechas, 
   (
       SELECCIONAR la MINIMA fecha 
       DE la tabla fechas 
       DONDE la fecha sea mayor a la fecha de la tabla externa
   ) con alias SIGUIENTE
DE la tabla fechas;
Si "traduces" esta consulta a SQL obtendrás el siguiente resultado:

Código MySQL:
Ver original
  1. +------+---------------------+---------------------+
  2. | id   | fecha               | siguiente           |
  3. +------+---------------------+---------------------+
  4. |    1 | 2012-07-16 09:16:00 | 2012-07-16 13:22:00 |
  5. |    2 | 2012-07-16 13:22:00 | 2012-07-16 17:51:00 |
  6. |    3 | 2012-07-16 17:51:00 | 2012-07-17 01:38:00 |
  7. |    4 | 2012-07-17 01:38:00 | 2012-07-17 03:45:00 |
  8. |    5 | 2012-07-17 03:45:00 | NULL                |
  9. +------+---------------------+---------------------+
  10. 5 rows in set (0.01 sec)

La parte en rojo, es una subconsulta que pondrás en la parte del SELECT.
Observa que el último registro tiene un NULL, pues no hay ningún registro posterior a la fecha actual. a partir de estas dos fechas puedes obtener la duración, con una función DATEDIFF

Haz la prueba y si tienes problemas nos comentas.

Saludos
Leo.