Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:wie man den Unterschied zwischen zwei Zeitstempeln in Sekunden erhält

Sie könnten den TIMEDIFF() und der TIME_TO_SEC() funktioniert wie folgt:

SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

Sie könnten auch den verwenden UNIX_TIMESTAMP() Funktion als @Amber vorgeschlagen in einer anderen Antwort:

SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') - 
       UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

Wenn Sie den TIMESTAMP verwenden Datentyp, ich vermute, dass der UNIX_TIMESTAMP() Lösung wäre etwas schneller, da TIMESTAMP -Werte sind bereits als Ganzzahl gespeichert, die die Anzahl der Sekunden seit der Epoche darstellt (Quelle ). Zitieren der docs :

Wenn UNIX_TIMESTAMP() wird auf einem TIMESTAMP verwendet -Spalte gibt die Funktion den internen Zeitstempelwert direkt zurück, ohne implizite „String-zu-Unix-Zeitstempel“-Konvertierung.

Denken Sie daran, dass TIMEDIFF() gibt den Datentyp TIME . TIME Werte können zwischen '-838:59:59' und '838:59:59' (ungefähr 34,96 Tage) liegen