5.15 Calculating Intervals Between Times
5.15.1 Problem
You want to know the amount of time elapsed between two times.
5.15.2 Solution
Convert the times to seconds with TIME_TO_SEC(
) and take the difference.
For a difference represented as a time, convert the result back the
other way using SEC_TO_TIME(
).
5.15.3 Discussion
Calculating intervals between times is similar to adding times
together, except that you compute a difference rather than a sum. For
example, to calculate intervals in seconds between pairs of
t1 and t2 values, convert the
values in the time_val table to seconds using
TIME_TO_SEC( ), then take the difference. To
express the resulting difference as a TIME value,
pass it to SEC_TO_TIME( ). The following query
shows intervals both ways:
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 |
+----------+----------+---------------------+------------------+
Note that intervals may be negative, as is the case when
t1 occurs later than t2.
|