Ответ 1
Вы можете использовать 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
уже сохранены как целое число, представляющее количество секунд с момента (Источник). Цитирование docs:
Когда
UNIX_TIMESTAMP()
используется в столбцеTIMESTAMP
, функция возвращает значение внутренней метки времени непосредственно, без какого-либо неявного преобразования "string-to-Unix-timestamp".Имейте в виду, что
TIMEDIFF()
возвращает тип данныхTIME
.TIME
значения могут варьироваться от '-838: 59: 59' до '838: 59: 59' (примерно 34,96 дней)