Page 1 sur 1

Enlever les weekends entre deux date

Posté : 12 nov. 2012, 13:42
par placebo147
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;

Re: Enlever les weekends entre deux date

Posté : 12 nov. 2012, 13:56
par dunbar
Salut

Regarde du côter de WEEKDAY

Exemple weekday(date)<6 devrait prendre les dates hors week end !

Re: Enlever les weekends entre deux date

Posté : 12 nov. 2012, 14:20
par placebo147
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é

Re: Enlever les weekends entre deux date

Posté : 12 nov. 2012, 14:53
par Mazarini
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 ?

Re: Enlever les weekends entre deux date

Posté : 12 nov. 2012, 15:24
par placebo147
sincerment je n'ai aucune idée de la maniere de proceder sur le mon Trigger

Re: Enlever les weekends entre deux date

Posté : 12 nov. 2012, 16:07
par Mazarini
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

Re: Enlever les weekends entre deux date

Posté : 12 nov. 2012, 17:04
par placebo147
Marche pas!!!!!