J'ai une requête mySql qui ajoute un certain intervalle de temps au champ date/heure.sql - ajout d'un intervalle de temps avec saut de certaine période
UPDATE table T
SET T.ending = DATE_ADD(T.ending, INTERVAL T.hours * 3600 * some_other_variable_factors SECONDS))
Maintenant, je dois détecter si nouveau temps de fin est entre quelques heures (disons 20h00-6h00), qui devrait être exclu du calcul.
Ie. si l'ancienne fin est aujourd'hui, 19:58 et nous ajoutons 4 minutes, la nouvelle fin devrait être demain, 06:02
La difficulté supplémentaire est que la durée d'ajout peut être supérieure à 24 heures. Donc si l'ancienne fin est aujourd'hui, 19h00 et nous ajoutons 24 heures, la nouvelle fin devrait être après-demain, 15,00 (ce qui sonne comme un titre d'un film vraiment mauvais;)
Y at-il moyen d'y parvenir en mysql? Dans une requête? Je pensais aussi aux procédures stockées, mais je n'ai aucune expérience avec.
Certaines données de test:
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');
et où il est 48? ou 72? Je voudrais évoquer avoir énorme commutateur ici –
Qu'est-ce que «48» ou «72» et pourquoi vous pensez qu'ils devraient être ici? – Quassnoi
Heures à ajouter en tant qu'intervalle. Parce que t_ending est DATETIME, pas TIME –