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