Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie berechnet man den Zeitunterschied zwischen aufeinanderfolgenden Zeilen in einer Tabelle?

Barbara Streisand
Freigeben: 2024-11-15 06:09:02
Original
420 Leute haben es durchsucht

How to Calculate Time Difference Between Consecutive Rows in a Table?

How to Calculate Time Difference in Two Consecutive Table Rows

In a table with a column called "StartDate," it's often necessary to determine the time difference between adjacent records. One user recently encountered this issue while working with a requestId and startdate table and sought assistance.

The table provided by the user contained data as follows:

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

The user's objective was to calculate the time difference between each adjacent pair of rows (e.g., requestId 1 and 2, 2 and 3, etc.). They recognized the need for a self-join but struggled to write the appropriate ON clause.

The provided solution leveraged an INNER JOIN between two instances of the same table (aliased as A and B). The ON clause specified that the requestId in row B should equal the requestId in row A plus one:

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
Nach dem Login kopieren

This query successfully calculated and returned the requested time difference between consecutive rows. However, if the requestId is not consecutive, an alternative approach is required:

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
Nach dem Login kopieren

In this modified query, a CROSS JOIN is used to match each row with every other row in the table. A subquery then selects the minimum requestId that is greater than the current selected requestId, ensuring that only consecutive rows are compared.

Das obige ist der detaillierte Inhalt vonWie berechnet man den Zeitunterschied zwischen aufeinanderfolgenden Zeilen in einer Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage