Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:come ottenere la differenza tra due timestamp in pochi secondi

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)