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+------+---------------------+
| id | fecha |
+------+---------------------+
| 1 | 2012-07-16 09:16:00 |
| 2 | 2012-07-16 13:22:00 |
| 3 | 2012-07-16 17:51:00 |
| 4 | 2012-07-17 01:38:00 |
| 5 | 2012-07-17 03:45:00 |
+------+---------------------+
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+------+---------------------+---------------------+
| id | fecha | siguiente |
+------+---------------------+---------------------+
| 1 | 2012-07-16 09:16:00 | 2012-07-16 13:22:00 |
| 2 | 2012-07-16 13:22:00 | 2012-07-16 17:51:00 |
| 3 | 2012-07-16 17:51:00 | 2012-07-17 01:38:00 |
| 4 | 2012-07-17 01:38:00 | 2012-07-17 03:45:00 |
| 5 | 2012-07-17 03:
45:
00 | NULL | +------+---------------------+---------------------+
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.