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
La connaissance n'est rien sans celles des autres !!!
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
La connaissance n'est rien sans celles des autres !!!
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'suis vert !
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
La connaissance n'est rien sans celles des autres !!!
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
Encore une fois ! merci Zers !
La connaissance n'est rien sans celles des autres !!!
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