Enlever les weekends entre deux date

Petit nouveau ! | 6 Messages

12 nov. 2012, 13:42

Bonjour, voici mon Trigger qui marche à la perfection, sauf que j'aimerai pouvoir ne pas calculé les weekends entre les dates x = cf_802 et cf_860 , cela dit qu'a chaque weekend confronté, on ajoute deux jours ...etc

ex1 :
cf_802 = 16/11/2012 ( vendredi prochain )
cf_865 = 2j ( cf_865 = un délai saisit dans l'interface )


donc notre date de sortie doit être:
cf_860 = 21/11/2012




ex2 :
cf_802 = 16/11/2012 ( vendredi prochain )
cf_865 = 12j

donc notre date de sortie doit etre : les weekends sont : 17 et 18 Non + 24 et 25 Non + 1 et 2 Non
est >> 04/12/2012

Code : Tout sélectionner

CREATE TRIGGER Before_Update_TriggerAnalyse BEFORE Update ON vtiger_analysecf FOR EACH ROW begin DECLARE x date; SET x=( select cf_802 from vtiger_echantilloncf where echantillonid in (select echantillonid from vtiger_echantillon where code in (select cf_925 from vtiger_analysecf where cf_925 = NEW.cf_925))); if NEW.cf_865 < 3 THEN SET NEW.cf_860=TIMESTAMPADD(DAY,1+NEW.cf_865,x); ELSEIF NEW.cf_865 between '3' AND '8' THEN SET NEW.cf_860=TIMESTAMPADD(DAY,-1+NEW.cf_865,x); ELSEIF NEW.cf_865 between '8' AND '12' THEN SET NEW.cf_860=TIMESTAMPADD(DAY,-2+NEW.cf_865,x); ELSE SET NEW.cf_860=TIMESTAMPADD(DAY,-5+NEW.cf_865,x); END IF; END;

ViPHP
ViPHP | 2291 Messages

12 nov. 2012, 13:56

Salut

Regarde du côter de WEEKDAY

Exemple weekday(date)<6 devrait prendre les dates hors week end !
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Petit nouveau ! | 6 Messages

12 nov. 2012, 14:20

oui oui weekday() ou dayofweek() retournent les index de journées , mais dans mon cas, il faut que je saute les weekends parceque ca se pourrait qu"il y est pleins de weekends entre cf_802 et cf_860 et la je suis completement bloqué

ViPHP
ViPHP | 2577 Messages

12 nov. 2012, 14:53

Si tu veux ajouter un nombre "n" de jour hors week-end,
- il faut se placer sur le jour suivant tant que l'on est un week-end
- il faut ajouter la partie entière(n/5)*7 pour arriver le même jour de la semaine dans le futur
- puis ajouter le reste de la division n/5 en tenant compte des week-end (boucle pour les 4 jours max)

Reste le problème des jours fériés ?

Petit nouveau ! | 6 Messages

12 nov. 2012, 15:24

sincerment je n'ai aucune idée de la maniere de proceder sur le mon Trigger

ViPHP
ViPHP | 2577 Messages

12 nov. 2012, 16:07

Vu ton message privé,

Soit n le nombre de jour à ajouter, tu calcules n/5, puis tu en prend la partie entière (je ne connais pas assez SQL pour savoir exactement comment) et le modulo par 5.
Tu commences par ajouter le nombre de semaine (partie entière) multiplié par 7. Si tu dois ajouter 5 jours, il faut forcément en ajouter 7, pour 10 : 14, pour 15 : 21...
Ensuite tu traite le reste à ajouter par une boucle
tant que le reste > 0
si la date est un vendredi
date = date + 3 jours
sinon
date = date + 1
fin si
reste = reste - 1
fin tant que

Petit nouveau ! | 6 Messages

12 nov. 2012, 17:04

Marche pas!!!!!