Mega Code Archive

 
Categories / MySQL / Date Time
 

Return the total working time, using SUM

mysql> For example, here is the result for all the days in March 2005: mysql> mysql> CREATE TABLE mytable (     ->     id INT AUTO_INCREMENT,     ->     begintime DATETIME,     ->     endtime DATETIME,     ->     PRIMARY KEY (id)     -> ); Query OK, 0 rows affected (0.01 sec) mysql> mysql> INSERT INTO mytable (begintime, endtime) VALUES     ->         ('2005-03-27 7:15', '2005-03-27 18:00'),     ->         ('2005-03-28 8:00', '2005-03-28 18:00'),     ->         ('2005-03-29 7:30', '2005-03-29 16:50'),     ->         ('2005-03-30 7:00', '2005-03-30 17:15'); Query OK, 4 rows affected (0.00 sec) Records: 4  Duplicates: 0  Warnings: 0 mysql> mysql> SELECT SEC_TO_TIME(SUM(UNIX_TIMESTAMP(endtime) -     -> UNIX_TIMESTAMP(begintime))) AS sumtime     -> FROM mytable     -> WHERE begintime>='2005-03-01 00:00:00' AND     -> begintime<='2005-03-31 23:59:59'; +----------+ | sumtime  | +----------+ | 40:20:00 | +----------+ 1 row in set (0.00 sec) mysql> mysql> mysql> mysql> drop table mytable; Query OK, 0 rows affected (0.00 sec) mysql>