Du kan använda TIMEDIFF()
och
code>TIME_TO_SEC()
fungerar enligt följande:
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 också använda UNIX_TIMESTAMP()
fungera som @Amber föreslog
i ett annat 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)
Om du använder TIMESTAMP
datatyp antar jag att UNIX_TIMESTAMP()
lösningen skulle vara något snabbare, eftersom TIMESTAMP
värden är redan lagrade som ett heltal som representerar antalet sekunder sedan epoken (Källa
). Citerar dokumenten :
När
UNIX_TIMESTAMP()
används på enTIMESTAMP
kolumnen returnerar funktionen det interna tidsstämpelvärdet direkt, utan någon implicit konvertering av "sträng-till-Unix-tidsstämpel".Tänk på att
TIMEDIFF()
returdatatyp förTID
.TIME
värden kan variera från '-838:59:59' till '838:59:59' (ungefär 34,96 dagar)