Berechnen Sie die Differenz zwischen zwei Datumsangaben in MySQL

157

Ich speichere die letzte Anmeldezeit in MySQL in, datetime-type archiviert. Wenn sich Benutzer anmelden, möchte ich die Differenz zwischen der letzten Anmeldezeit und der aktuellen Zeit (die ich verwende NOW()) ermitteln.

Wie kann ich das berechnen?

Devesh Agrawal
quelle

Antworten:

296

BENUTZEN Sie die TIMESTAMPDIFFMySQL-Funktion. Zum Beispiel können Sie verwenden:

SELECT TIMESTAMPDIFF(SECOND, '2012-06-06 13:13:55', '2012-06-06 15:20:18')

In Ihrem Fall wäre der dritte TIMSTAMPDIFFFunktionsparameter die aktuelle Anmeldezeit ( NOW()). Der zweite Parameter ist die letzte Anmeldezeit, die sich bereits in der Datenbank befindet.

FSP
quelle
Das ist, um das letzte Login zu aktualisieren, oder? Was ich will, ist wie im Stackoverflow. Ihre Frage wurde vor 2s, 30s, vor 2 min gestellt. usw. Ich möchte eine ähnliche Art von Funktionalität. Zum Beispiel gibt es eine Tabelle mit der Aufschrift REQUESTS (ID, Nachricht, Zeitstempel). Der Zeitstempel während des Speicherns ist JETZT (). Während ich eine Abfrage ausführe, wähle * aus Anfragen aus, anstatt diesen Wert anzuzeigen, sollte es ID, Nachricht und wie viel Zeit zurück Anfrage gesendet wurde.
Devesh Agrawal
1
Während ich die Abfrage SELECT TIMESTAMPDIFF (SECOND, NOW () ausführe, wähle 'lastLoginTime aus Anforderungen aus, bei denen id =' 2 ''). Es wird NULL zurückgegeben. Irgendeine Idee warum?
Devesh Agrawal
Was ist die Ausgabe von select lastLoginTime aus Anforderungen mit id = '2'?
FSP
SELECT TIMESTAMPDIFF (SECOND, NOW (), '2012-06-06 08:07:36'); Versuche dies!
FSP
Ja, das funktioniert, aber ich muss den zweiten Parameter aus der Tabelle holen. Wie man das erreicht. Tatsächlich möchte ich verschachtelte Abfragen vermeiden. Irgendeine Idee?
Devesh Agrawal
3

meine zwei Cent über Logik:

Syntax ist "altes Datum" -: "neues Datum", also:

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:00', '2018-11-15 15:00:30')

gibt 30,

SELECT TIMESTAMPDIFF(SECOND, '2018-11-15 15:00:55', '2018-11-15 15:00:15')

gibt: -40

ingconti
quelle
2

Wenn Ihre Start- und Enddaten an unterschiedlichen Tagen liegen, verwenden Sie TIMEDIFF.

SELECT TIMEDIFF(datetime1,datetime2)

wenn datetime1> datetime2 dann

SELECT TIMEDIFF("2019-02-20 23:46:00","2019-02-19 23:45:00")

gibt: 24:01:00

und datetime1 <datetime2

SELECT TIMEDIFF("2019-02-19 23:45:00","2019-02-20 23:46:00")

ergibt: -24: 01: 00

Adi
quelle
Beachten Sie, kann nur Daten im Abstand von bis zu 839 Stunden bewältigen
Caius Jard