Du kan bruge TIMEDIFF()
og TIME_TO_SEC()
fungerer som følger:
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)
Du kan også bruge UNIX_TIMESTAMP()
fungere som @Amber foreslået
i et andet svar:
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)
Hvis du bruger TIMESTAMP
datatype, gætter jeg på, at UNIX_TIMESTAMP()
løsningen ville være lidt hurtigere, da TIMESTAMP
værdier er allerede gemt som et heltal, der repræsenterer antallet af sekunder siden epoken (Kilde
). Citerer dokumenterne a> :
Når UNIX_TIMESTAMP()
bruges på en TIMESTAMP
kolonne, returnerer funktionen den interne tidsstempelværdi direkte uden implicit konvertering af "streng-til-Unix-tidsstempel".
Husk at TIMEDIFF()
returdatatypen TID
. TID
værdier kan variere fra '-838:59:59' til '838:59:59' (ca. 34,96 dage)