Bonjour à tous,

Je suis entrain de développer un petit script SQL fort simple : On prend un champ date et on soustrait un nombre (en jours) pour arriver à une nouvelle date. Je suis sous SQL Server 2000..

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
update
	OrderDet
set
	User_Date1 = DATEADD(dd, -User_Number1, DueDate)
where
	DueDate >= '01-01-08'
	and
	Status = 'Open';
Ce code fonctionne super bien, il prend mon chiffre et le soustrait (addition négative) à ma date. Toutefois, il ne prend pas en compte les fin de semaines....

J'ai trouvé cette fonction pour trouver quel jour de la semaine est la date spécifiée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Select DATEPART(weekday, /*ma_date*/)
Il me retourne un chiffre de 1 à 7... (7 étant le samedi et 1 le dimanche). J'aimerais pouvoir faire mon update de la façon suivante (en pseudo-code) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Int vraijours = 0;
Pour compteur de 0 à User_Number1 (Mon chiffre)
               Si ((DATEADD(dd, -vraijours, DueDate) = '7') OU (DATEADD(dd, -vraijours, DueDate) = '1') ) Alors /*Si c'est un jour de fin de semaine*/
                       vraijours+=1;
               Sinon
                       vraijours+=1;
                       compteur+=1; /*Le jour n'est pas une fin de semaine, donc on augmente notre compteur*/
               Fin Si
Fin Pour
 
/*Update dans la table pour la ligne en question*/
 
 
/*Faire cette petite boucle pour chaque ligne de ma table OrderDet*/

J'ai tenté de faire quelques boucles en T-SQL, mais c'est du nouveau pour moi et j'ai beaucoup de misère... Si quelqu'un peut m'aider sa serait sympa =)