Вычисление интервалов между значениями времени

Задача
Вы хотите узнать, сколько времени прошло между двумя значениями времени.

Решение
Преобразуйте время в секунды с помощью функции TIME_TO_SEC() и вычислите разность. Если вам нужен интервал, представленный как время, выполните обратное преобразование, используя функцию SEC_TO_TIME().

Обсуждение
Вычисление интервала между значениями времени похоже на сложение значений времени, только в данном случае вычисляется не сумма, а разность. Например, чтобы вычислить интервал в секундах между парами значений t1 и t2, преобразуйте значения таблицы time_val в секунды при помощи TIME_TO_SEC(), а затем вычислите разность. Чтобы результатом было значение типа TIME, следует передать его в SEC_TO_TIME(). Следующий запрос выводит интервалы в двух представлениях:

mysql> SELECT t1, t2,
-> TIME_TO_SEC(t2) - TIME_TO_SEC(t1) AS 'interval in seconds',
-> SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1)) AS 'interval as TIME'
-> FROM time_val;

+----------+----------+---------------------+------------------+
| t1 | t2 | interval in seconds | interval as TIME |
+----------+----------+---------------------+------------------+
| 15:00:00 | 15:00:00 | 0 | 00:00:00 |
| 05:01:30 | 02:30:20 | -9070 | -02:31:10 |
| 12:30:20 | 17:30:45 | 18025 | 05:00:25 |
+----------+----------+---------------------+------------------+

Обратите внимание на то, что интервалы могут быть и отрицательными, если время t1 наступило позже, чем t2.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Выбор записей по временным характеристикам
Вывод значений TIMESTAMP в удобном для чтения виде
Вычисление возраста
Вычисление длины месяца
Вычисления для високосных годов

Вернуться в раздел: MySQL / 5. Работа с датами и временем