2011-10-29 23 views
16

Tengo una tabla con la columna Fecha de inicio, quiero calcular la diferencia de tiempo entre dos registros consecutivos.Calcular la diferencia de tiempo entre dos filas

Gracias.


@ Marcos Byers y @ Yahia, tengo tabla de solicitud como RequestID, STARTDATE

requestId startdate    
1   2011-10-16 13:15:56 
2   2011-10-16 13:15:59 
3   2011-10-16 13:15:59 
4   2011-10-16 13:16:02 
5   2011-10-16 13:18:07 

y quiero saber cuál es la diferencia de tiempo entre RequestID 1 & 2, 2 & 3, 3 & 4 y así sucesivamente. Sé que necesitaré unirme a la mesa, pero no estoy recibiendo la cláusula correcta.

+4

Consecutivo según qué campo? ¿Puedes dar un ejemplo de lo que quieres? –

Respuesta

21

Para lograr lo que están pidiendo intente lo siguiente (actualización después de edición de OP):

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference 
FROM MyTable A INNER JOIN MyTable B ON B.requestid = (A.requestid + 1) 
ORDER BY A.requestid ASC 

SI requestid no es consecutivo, entonces usted puede utilizar

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference 
FROM MyTable A CROSS JOIN MyTable B 
WHERE B.requestid IN (SELECT MIN (C.requestid) FROM MyTable C WHERE C.requestid > A.requestid) 
ORDER BY A.requestid ASC 
3

La respuesta aceptada es correcta, pero da la diferencia de números. Como ejemplo, si tengo las siguientes marcas de tiempo de 2:

2014-06-09 09:48:15 
2014-06-09 09:50:11 

La diferencia se da como 196. Esto es simplemente 5011 - 4815. Con el fin de obtener la diferencia de tiempo, es posible modificar la secuencia de comandos de la siguiente manera:

SELECT A.requestid, A.starttime, TIMESTAMPDIFF(MINUTE,A.starttime,B.starttime) AS timedifference 
FROM MyTable A INNER JOIN MyTable B ON B.requestid = (A.requestid + 1) 
ORDER BY A.requestid ASC 
Cuestiones relacionadas