sql - добавление временного интервала с пропуском определенного периода

У меня есть запрос mySql, который добавляет определенный интервал времени в поле datetime.

UPDATE table T 
   SET T.ending = DATE_ADD(T.ending, INTERVAL T.hours * 3600 * some_other_variable_factors SECONDS)) 

Теперь мне нужно определить, находится ли новое время окончания между несколькими часами (скажем, с 20:00 до 06:00), что следует исключить из расчета.

Т.е. если старое окончание - сегодня, 19:58, и мы добавляем 4 минуты, новое окончание должно быть завтра, 06:02

Дополнительная сложность заключается в том, что время, которое нужно добавить, может быть больше 24 часов. Итак, если старое окончание сегодня, 19. 00, и мы добавляем 24 часа, новый финал должен быть послезавтра, 15.00 (что звучит как название очень плохого фильма;)

Есть ли способ добиться этого в mysql? В одном запросе? Я тоже думал о хранимых процедурах, но у меня нет опыта работы с ними.

Некоторые тестовые данные:

   CREATE TABLE IF NOT EXISTS `tt` (
      `source` datetime NOT NULL,
      `hours` int(11) NOT NULL,
      `off_start` int(11) NOT NULL,
      `off_long` int(11) NOT NULL,
      `correct` datetime NOT NULL    
    ) ENGINE=InnoDb;


    INSERT INTO `tt` (`source`, `hours`, `off_start`, `off_long`, `correct`) VALUES
    ('2010-11-11 12:00:00', 1, 20, 10, '2010-11-11 13:00:00'),
    ('2010-11-11 19:00:00', 1, 20, 10, '2010-11-12 06:00:00'),
    ('2010-11-11 19:00:00', 2, 20, 10, '2010-11-12 07:00:00'),
    ('2010-11-11 19:00:00', 3, 20, 10, '2010-11-12 08:00:00'),
    ('2010-11-11 19:00:00', 24, 20, 10, '2010-11-13 15:00:00'),
    ('2010-11-11 19:00:00', 48, 20, 10, '2010-11-15 11:00:00'),
    ('2010-11-11 19:00:00', 72, 20, 10, '2010-11-17 07:00:00');
5
задан OMG Ponies 18 November 2010 в 03:39
поделиться