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