Potresti usare TIMEDIFF()
e le TIME_TO_SEC()
funziona come segue:
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)
Puoi anche usare UNIX_TIMESTAMP()
funzione come @Amber suggerito
in un'altra risposta:
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)
Se stai usando il TIMESTAMP
tipo di dati, suppongo che il UNIX_TIMESTAMP()
soluzione sarebbe leggermente più veloce, poiché TIMESTAMP
i valori sono già memorizzati come un numero intero che rappresenta il numero di secondi dall'epoca (Fonte
). Citando i documenti :
Quando UNIX_TIMESTAMP()
viene utilizzato su un TIMESTAMP
colonna, la funzione restituisce direttamente il valore del timestamp interno, senza alcuna conversione implicita da "stringa a Unix timestamp".
Tieni presente che TIMEDIFF()
tipo di dati di ritorno di TIME
. TIME
i valori possono variare da '-838:59:59' a '838:59:59' (circa 34,96 giorni)