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?


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.


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


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


Beachten Sie, kann nur Daten im Abstand von bis zu 839 Stunden bewältigen
Caius Jard
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.