Můžete použít TIMEDIFF()
a TIME_TO_SEC()
funguje následovně:
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)
Můžete také použít UNIX_TIMESTAMP()
fungovat jako @Amber navrhl
v jiné odpovědi:
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)
Pokud používáte TIMESTAMP
datový typ, myslím, že UNIX_TIMESTAMP()
řešení by bylo o něco rychlejší, protože TIMESTAMP
hodnoty jsou již uloženy jako celé číslo představující počet sekund od epochy (Zdroj
). Citace dokumenty :
Když
UNIX_TIMESTAMP()
se používá naTIMESTAMP
funkce vrací hodnotu interního časového razítka přímo, bez implicitního převodu „string-to-Unix-timestamp“.Mějte na paměti, že
TIMEDIFF()
návratový datový typTIME
.TIME
hodnoty se mohou pohybovat od „-838:59:59“ do „838:59:59“ (přibližně 34,96 dne)