Hallo Sebastian,


vielen Dank für deine schnelle Antwort. Das Kommando funktioniert, aber dauert sehr lange:

MariaDB [siemens]> SELECT TIMESTAMPDIFF(SECOND, created, LEAD(created) OVER (ORDER BY created DESC)) AS diff FROM log1 ORDER BY
created DESC LIMIT 1;
+------+
| diff |
+------+
| -121 |
+------+
1 row in set (1 min 5.042 sec)


Da kann ich die beiden Zeitstempel deutlich schneller in PHP (wo das SQL benutzt wird) subtrahieren.


VG,

Erik


Am 19.02.22 um 13:29 schrieb Sebastian Weckend:
Hallo Erik,

schau dir mal die window functions [0], besonders LEAD [1] und LAG [2] an.

Wenn der Datentyp von created TIMESTAMP ist und du nur den Unterschied der beiden neuesten Zeilen in der DB möchtest, dann so was ähnliches wie (ungetestet):

SELECT
    TIMESTAMPDIFF(SECOND, created, LEAD(created) OVER (ORDER BY created DESC)) AS diff
FROM table
ORDER BY created DESC
LIMIT 1;

Viele Grüße
Sebastian

[0] https://mariadb.com/kb/en/window-functions/
[1] https://mariadb.com/kb/en/lead/
[2] https://mariadb.com/kb/en/lag/

Am 19.02.22 um 12:14 schrieb Erik Schanze:
Liebe Linux-User,


ich habe eine MariaDB auf Debian 11 laufen und möchte die Zeitdifferenz
in Sekunden zwischen der letzten und der vorletzten Zeile in einer
Tabelle haben, anhand des "created"-Wertes. Die Beispiele im Internet
ufern irgendwie immer gleich derart aus, dass ich sie nicht mehr
verstehe. Ich habe nur rudimentäres SQL-Wissen. :-)

Gibt es da kein einfache Abfrage, die ich nur nicht gefunden habe?


Ich freue mich auf eure Antworten.


VG,

Erik