2009-06-11 2 views

Antwort

52

Es gibt Funktionen TIMEDIFF (expr1, expr2), die den Wert von expr1-expr2 zurückgibt, und TIME_TO_SEC (expr3), die expr1 in Sekunden ausdrückt.

Beachten Sie, dass Ausdruck1 und Ausdruck2 Datumswerte sind und Ausdruck3 nur ein Zeitwert ist.

Überprüfen Sie this link für weitere Informationen.

0

Sie können versuchen, sie auf Unix-Zeitstempel zu werfen und den Unterschied zu nehmen.

48

TIMESTAMPDIFF ist wie TIMEDIFF, die Matthew angibt, außer dass es den Unterschied der beiden Datumsangaben in den von Ihnen gewünschten Einheiten zurückgibt (Sekunden, Minuten, Stunden usw.).

Zum Beispiel

SELECT TIMESTAMPDIFF(MINUTE,LogOutTime,LogInTime) AS TimeLoggedIn 
FROM LogTable 

Würde die Anzahl der Minuten kehrt der Benutzer angemeldet wurde (vorausgesetzt, Sie diese Art der Sache in einer Tabelle gespeichert ähnlich).

+15

Beachten Sie, dass TIMEDIFF (expr1, expr2) zu expr1 - expr2 führt, wobei TIMESTAMPDIFF (unit, expr1, expr2) zu expr2 - expr1 führt. Nur etwas, auf das man achten sollte. –

+0

@Matthew Jones: Guter Punkt. – Welbog

+0

Danke für dieses eine zu man :) – Ali

9

Ich würde es so machen - holen, wo letzte Aktivität innerhalb von 10 Minuten von jetzt ist

SELECT * FROM table WHERE last_activity >= DATE_SUB(NOW(), INTERVAL 10 MINUTE) 
+1

Es ist eine schlechte Idee, einige Operationen auf dem Indexfeld zu verwenden. In diesem Fall ignoriert MySQL diesen Index: [Beispiel] (http://sqlfiddle.com/#!2/9619f0/1) (prüfen Sie, wie viele Felder verarbeitet werden, wenn Sie DATE_ADD für das Feld verwenden und wie viele Felder wann verarbeitet werden Sie sind Verwendung DATE_SUB auf der konstante (wie NOW()) So Ihre Abfrage nächste sein müssen:. '* FROM Tabelle SELECT WHERE last_activity> = DATE_SUB (NOW(), interval 10 Minuten)' Diese Regel ist gilt auch für die anderen Felder, die Teil des Index sind –

+0

Guter Punkt, und nette Beispiele.Ich habe die Antwort aktualisiert. –

0

SELECT TIMESTAMPDIFF (MINUTE, LogOutTime, Login) AS TimeLoggedIn VON LOGTABLE


Dieses Beispiel soll die Zeit ruinieren, wenn es unter Verwendung der Zeit verwendet wird. Für die Berechnung der Milliaturzeit empfehle ich es deshalb nicht, weil es negative Werte ausgibt.

Verwandte Themen