Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:jak uzyskać różnicę między dwoma znacznikami czasu w kilka sekund

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)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaplanować procedurę składowaną w MySQL

  2. HAProxy:wszystkie zasoby z serii Kilkanaście

  3. Replikacja MySQL:błędne transakcje w replikacji opartej na GTID

  4. Unikanie pojedynczego cudzysłowu w PHP podczas wstawiania do MySQL

  5. Wstrzyknięcia SQL w ADOdb i ogólne bezpieczeństwo witryny