У меня есть запрос 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');