sql >> Database teknologi >  >> RDS >> Mysql

MySQL - Beregn nettotidsforskellen mellem to dato-tider, mens pauser ekskluderes?

summer alle dine pauser, der opstår i løbet af tiderne, og træk derefter til resultatet af timediff/time_to_sec-funktionen

SELECT TIME_TO_SEC(TIMEDIFF('17:00:00', '09:00:00')) -- 28800

SELECT TIME_TO_SEC(TIMEDIFF('12:30:00', '12:00:00')) -- 1800
SELECT TIME_TO_SEC(TIMEDIFF('10:30:00', '10:15:00')) -- 900

-- 26100
 

Forudsat denne struktur:

CREATE TABLE work_unit (
 id INT NOT NULL,
 initial_time TIME,
 final_time TIME
)
CREATE TABLE break (
 id INT NOT NULL,
 initial_time TIME,
 final_time TIME
)
INSERT work_unit VALUES (1, '09:00:00', '17:00:00')
INSERT break VALUES (1, '10:00:00', '10:15:00')
INSERT break VALUES (2, '12:00:00', '12:30:00')
 

Du kan beregne det med næste forespørgsel:

SELECT *, TIME_TO_SEC(TIMEDIFF(final_time, initial_time)) total_time , (SELECT SUM( TIME_TO_SEC(TIMEDIFF(b.final_time, b.initial_time))) FROM break b WHERE (b.initial_time BETWEEN work_unit.initial_time AND work_unit.final_time) OR (b.final_time BETWEEN work_unit.initial_time AND work_unit.final_time) ) breaks FROM work_unit


  1. forkert tal i forespørgslen

  2. Hvordan transponeres MySQL-rækker og gentage kolonneoverskrifter?

  3. php-data fra databasen vises ikke efter søgning

  4. Django + MySQL på Mac OS 10.6.2 Snow Leopard