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 unTIMESTAMPcolonne, 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 deTIME.TIMEles valeurs peuvent aller de '-838:59:59' à '838:59:59' (environ 34,96 jours)