Bonjour, je voudrais compter le nombre de jour ouvré entre deux date
exemple : du 01/12/2006 au 06/12/2006 = 4 jours
existe t'il une fonction ou doit on là créer
Meci
Bonjour, je voudrais compter le nombre de jour ouvré entre deux date
exemple : du 01/12/2006 au 06/12/2006 = 4 jours
existe t'il une fonction ou doit on là créer
Meci
Oui , il y a une fonction !
C'est datediff il me semble :
je suis plus sur de la syntax mais ca doit etre ca !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 datediff(date-depart,date_fin)
Voili , Voilou
la fonction datediff compte ce que tu lui demande
datediff(day,date1,date2) mais ça repond pas à ma demande moi je veux le nombre de jour Ouvré sans les samedi et dimanche
Mais merci quand même
moi je ferais une boucle et utiliserai la fonction DATEPART.
les chiffres 1 et 7 correspondent à samedi et dimanche, donc, je n'incremente pas la variable, ca marche mais ca ne prends pas en compte les jours fériés !
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
16
17
18
19
20
21
22 DECLARE @date_debut datetime DECLARE @date_fin datetime DECLARE @nbr_jour int SET @date_debut = '12/01/2006' SET @date_fin = '12/06/2006' SET @nbr_jour = 0 WHILE @date_debut <= @date_fin BEGIN IF (DATEPART(dw,@date_debut) NOT IN (1,7)) BEGIN SET @nbr_jour = @nbr_jour + 1 END SET @date_debut = DATEADD(day,1,@date_debut) END PRINT @nbr_jour
j'ai fait une function avec un while mais g l'impression qui boucle quand les date sont différente voici celle que j'avais faite avant :
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
16
17
18
19
20
21
22
23
24
25
26
27 create function dbo.datediff_ouvre ( @F_DATE as datetime, @L_DATE as datetime ) returns integer as begin Declare @NB integer Declare @F_DATE_T datetime -- Date transformé en jj/mm/aaaa Declare @L_DATE_T datetime -- Date transformé en jj/mm/aaaa set @F_DATE_T = dateadd(day,0,convert(varchar,@F_DATE,103)) set @L_DATE_T = dateadd(day,0,convert(varchar,@L_DATE,103)) set @NB = 0 if @F_DATE_T = @L_DATE_T set @NB = 0 while @F_DATE_T <> @L_DATE_T set @NB = @NB + 1 set @F_DATE_T = dateadd(day,@NB,@F_DATE_T) return @NB end
SalutEnvoyé par Poisson59
Me suis permis de modifier des erreurs dans ton code
Execution et résultat (j'ai SQL2K en anglais)
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
16
17
18
19
20 CREATE function datediff_ouvre ( @F_DATE as datetime, @L_DATE as datetime ) returns int as begin Declare @NB integer set @NB = 0 while datediff(dd, @F_DATE,@L_DATE) >=0 BEGIN if datepart(weekday, @F_DATE) not in (1,7) set @NB = @NB + 1 set @F_DATE = dateadd(dd,1,@F_DATE) END return @NB end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select dbo.datediff_ouvre('2006/12/01', '2006/12/06') resu 4
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager