Możesz użyć TIMEDIFF()
i TIME_TO_SEC()
działa w następujący sposób:
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)
Możesz również użyć UNIX_TIMESTAMP()
działa jako Zasugerowano @Amber
w innej odpowiedzi:
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)
Jeśli używasz TIMESTAMP
typ danych, myślę, że UNIX_TIMESTAMP()
rozwiązanie byłoby nieco szybsze, ponieważ TIMESTAMP
wartości są już przechowywane jako liczby całkowite reprezentujące liczbę sekund od epoki (Źródło
). Cytując dokumentację :
Kiedy UNIX_TIMESTAMP()
jest używany w TIMESTAMP
kolumna, funkcja zwraca bezpośrednio wartość wewnętrznego znacznika czasu, bez niejawnej konwersji „ciąg-do-uniksowego-datownika”.
Pamiętaj, że TIMEDIFF()
zwracany typ danych TIME
. TIME
wartości mogą wynosić od „-838:59:59” do „838:59:59” (około 34,96 dni)