Mega Code Archive

 
Categories / MySQL / Date Time
 

Breaking Down Time Intervals into Components

mysql> mysql> CREATE TABLE time_val     -> (     ->  t1      TIME,     ->  t2      TIME     -> ); Query OK, 0 rows affected (0.00 sec) mysql> mysql> INSERT INTO time_val (t1,t2) VALUES('15:00:00','15:00:00'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO time_val (t1,t2) VALUES('05:01:30','02:30:20'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO time_val (t1,t2) VALUES('12:30:20','17:30:45'); Query OK, 1 row affected (0.00 sec) mysql> mysql> SELECT * FROM time_val; +----------+----------+ | t1       | t2       | +----------+----------+ | 15:00:00 | 15:00:00 | | 05:01:30 | 02:30:20 | | 12:30:20 | 17:30:45 | +----------+----------+ 3 rows in set (0.00 sec) mysql> mysql> mysql> SELECT t1, t2,     -> SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1)) AS 'interval as TIME',     -> IF(SEC_TO_TIME(TIME_TO_SEC(t2) >= TIME_TO_SEC(t1)),'+','-') AS sign,     -> HOUR(SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1))) AS hour,     -> MINUTE(SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1))) AS minute,     -> SECOND(SEC_TO_TIME(TIME_TO_SEC(t2) - TIME_TO_SEC(t1))) AS second     -> FROM time_val; +----------+----------+------------------+------+------+--------+--------+ | t1       | t2       | interval as TIME | sign | hour | minute | second | +----------+----------+------------------+------+------+--------+--------+ | 15:00:00 | 15:00:00 | 00:00:00         | +    |    0 |      0 |      0 | | 05:01:30 | 02:30:20 | -02:31:10        | -    |    2 |     31 |     10 | | 12:30:20 | 17:30:45 | 05:00:25         | +    |    5 |      0 |     25 | +----------+----------+------------------+------+------+--------+--------+ 3 rows in set (0.00 sec) mysql> mysql> drop table time_val; Query OK, 0 rows affected (0.00 sec)