sql >> Database >  >> RDS >> Mysql

MySQL - Bereken het netto tijdsverschil tussen twee datum-tijden zonder pauzes?

tel al uw pauzes op die zich tijdens de tijden voordoen en trek deze vervolgens af tot het resultaat van de functie timediff/time_to_sec

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

Uitgaande van deze structuur:

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')

U kunt het berekenen met de volgende vraag:

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. Controleer of de database al bestaat

  2. Fout:kan TypedQuery niet maken voor query met meer dan één return

  3. MySQL weigert kolom met ON DELETE SET NULL maar niet ON DELETE CASCADE

  4. Hoe de primaire sleutel van integer naar serieel te converteren?