Problem:
In einer Tabelle sind Messwerte mit einem Zeitstempel abgelegt. Es soll nun herausgefunden werden, wie lange die Messungen auseinanderliegen. D.h. es soll der Vorgänger der aktuellen Messung gesucht werden.
Lösung:
In einer Variablen wird das Messdatum gespeichert. Es steht dann im nächsten Datensatz zur Verfügung, bevor wiederum das Datum dieses Datensatzes in die Variable gespeichert wird. Die Differenz zu bilden ist dann einfach. Hier mein Query:
select measuredate AS Messdatum, @a AS Vorgaenger, unix_timestamp(measuredate) - unix_timestamp(@a) AS Differenz, @a:=measuredate AS setVorgaenger FROM (SELECT @a:='1970-01-01') rn, tbldatarecord t ORDER BY measuredate
Das Startdatum des Vorgängers wird hier auf 1.1.1970 gesetzt. Das Query ist wesentlich performanter als alle Lösungen, die ich sonst im Netz gefunden habe.