add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE testing (id INT, from_time TIME, to_time TIME, task VARCHAR(255));
INSERT INTO testing VALUES
(1, '21:00:00', '22:00:00', 'Cleaning(some task)'),
(1, '22:00:00', '23:30:00', 'Fumigation'),
(1, '04:00:00', '7:00:00', 'Disinfection'),
(1, '02:00:00', '4:00:00', 'Break'),
(1, '23:30:00', '2:00:00', 'Fogging'),
(2, '09:00:00', '10:00:00', 'Cleaning(some task)'),
(2, '16:00:00', '18:30:00', 'Disinfection'),
(2, '11:30:00', '14:00:00', 'Fumigation'),
(2, '14:00:00', '16:00:00', 'Fogging'),
(2, '10:00:00', '11:30:00', 'Break');
Records: 10  Duplicates: 0  Warnings: 0
SELECT * FROM testing;
id from_time to_time task
1 21:00:00 22:00:00 Cleaning(some task)
1 22:00:00 23:30:00 Fumigation
1 04:00:00 07:00:00 Disinfection
1 02:00:00 04:00:00 Break
1 23:30:00 02:00:00 Fogging
2 09:00:00 10:00:00 Cleaning(some task)
2 16:00:00 18:30:00 Disinfection
2 11:30:00 14:00:00 Fumigation
2 14:00:00 16:00:00 Fogging
2 10:00:00 11:30:00 Break
SELECT t1.*
FROM testing t1
JOIN (
SELECT id, TIMEDIFF(MAX(from_time), MIN(from_time)) AS diff
FROM testing
GROUP BY id
) t2 ON t1.id = t2.id
ORDER BY t1.id, IF(t2.diff > '12:00' AND from_time < '12:00', from_time + INTERVAL 24 HOUR, from_time);
id from_time to_time task
1 21:00:00 22:00:00 Cleaning(some task)
1 22:00:00 23:30:00 Fumigation
1 23:30:00 02:00:00 Fogging
1 02:00:00 04:00:00 Break
1 04:00:00 07:00:00 Disinfection
2 09:00:00 10:00:00 Cleaning(some task)
2 10:00:00 11:30:00 Break
2 11:30:00 14:00:00 Fumigation
2 14:00:00 16:00:00 Fogging
2 16:00:00 18:30:00 Disinfection