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