Можете да използвате TIMEDIFF()
и TIME_TO_SEC()
функционира, както следва:
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)
Можете също да използвате UNIX_TIMESTAMP()
функционира като @Amber предложи
в друг отговор:
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)
Ако използвате TIMESTAMP
тип данни, предполагам, че UNIX_TIMESTAMP()
решението би било малко по-бързо, тъй като TIMESTAMP
стойностите вече се съхраняват като цяло число, представляващо броя на секундите от епохата (Източник
). Цитиране на документите :
Когато
UNIX_TIMESTAMP()
се използва заTIMESTAMP
колона, функцията връща вътрешната стойност на времеви печат директно, без имплицитно преобразуване „string-to-Unix-timestamp“.Имайте предвид, че
TIMEDIFF()
връщане тип данни наTIME
.TIME
стойностите може да варират от '-838:59:59' до '838:59:59' (приблизително 34,96 дни)