Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :comment obtenir la différence entre deux horodatages en quelques secondes

Vous pouvez utiliser le TIMEDIFF() et le TIME_TO_SEC() fonctionne comme suit :

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)

Vous pouvez également utiliser le UNIX_TIMESTAMP() fonctionner comme @Amber a suggéré dans une autre réponse :

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)

Si vous utilisez le TIMESTAMP type de données, je suppose que le UNIX_TIMESTAMP() solution serait légèrement plus rapide, puisque TIMESTAMP les valeurs sont déjà stockées sous forme d'entier représentant le nombre de secondes depuis l'époque (Source ). Citant les docs :

Lorsque UNIX_TIMESTAMP() est utilisé sur un TIMESTAMP colonne, la fonction renvoie directement la valeur d'horodatage interne, sans conversion implicite "chaîne en horodatage Unix".

Gardez à l'esprit que TIMEDIFF() renvoyer le type de données de TIME . TIME les valeurs peuvent aller de '-838:59:59' à '838:59:59' (environ 34,96 jours)