Re: SQL-Frage
Erik Schanze <[email protected]>
| Newsgroups | gmane.user-groups.linux.dresden |
|---|---|
| Message-ID | <[email protected]> |
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 >> >> >