frangipane44
Messages postés70Date d'inscriptionvendredi 3 décembre 2004StatutMembreDernière intervention11 octobre 2012 11 avril 2007 à 18:08
Autre erreur : Les jours du week-end ne correspondent pas :
c'est 1 pour le dimanche et non 7,
7 pour le samedi et non 6.
frangipane44
Messages postés70Date d'inscriptionvendredi 3 décembre 2004StatutMembreDernière intervention11 octobre 2012 11 avril 2007 à 16:43
Le calcul du jour de pâques ne fonctionne pas.
L'arrondi est mauvais lorsqu'il y a une division : mettre un TRUNC(ladivision,0) pour garder la partie entière.
Voilà une petite fonction pour calculer le nombre de jours ouvrés entre 2 dates à l'aide des fonctions précédentes :
CREATE OR REPLACE Function FUN_NB_JOURS_OUVRES (dateInf IN DATE, dateSup IN DATE) RETURN INTEGER
AS
-- Cette fonction calcule le nombre de jours ouvrés entre 2 dates
dateTemp := dateInf;
nbReturn :=0;
--le nombre de jours calendaires entre les 2 dates :
nbJoursCalendaires := dateSup - dateInf;
--pour chaque jour on regarde si celui-ci est travaillé ou pas
FOR i IN 1..nbJoursCalendaires LOOP
IF FUN_JOUR_FERIE(dateTemp,0) = 'X' THEN
nbReturn := nbReturn + 1;
END IF;
dateTemp := dateTemp + 1;
END LOOP;
RETURN (nbReturn);
END FUN_NB_JOURS_OUVRES;
/
cs_fabrice69
Messages postés1765Date d'inscriptionjeudi 12 octobre 2000StatutMembreDernière intervention11 décembre 20135 29 nov. 2004 à 13:54
C'est dans le même principe mais avec un suivi plus poussé pour la définition des statut de chaque jour. En revanche ca permet de créer une table et non d'être dynamique comme l'est cette fonction. Il faut donc réfléchir aux besoins.
Romelard Fabrice.
glplpmat
Messages postés70Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention 2 octobre 20061 26 nov. 2004 à 14:12
Pas mal mais uniquement pour la France
14/07 pas ferie dans les autres pays
21/07 ferie en Belgique
24/06 ferie au Luxembourg
26/12 ferie au Luxembourg
...
Tu pourai ajouter un parametre pour choisir le pays
11 avril 2007 à 18:08
c'est 1 pour le dimanche et non 7,
7 pour le samedi et non 6.
11 avril 2007 à 16:43
L'arrondi est mauvais lorsqu'il y a une division : mettre un TRUNC(ladivision,0) pour garder la partie entière.
Voilà une petite fonction pour calculer le nombre de jours ouvrés entre 2 dates à l'aide des fonctions précédentes :
CREATE OR REPLACE Function FUN_NB_JOURS_OUVRES (dateInf IN DATE, dateSup IN DATE) RETURN INTEGER
AS
dateTemp DATE;
nbReturn INTEGER;
nbJoursCalendaires INTEGER;
BEGIN
-- Cette fonction calcule le nombre de jours ouvrés entre 2 dates
dateTemp := dateInf;
nbReturn :=0;
--le nombre de jours calendaires entre les 2 dates :
nbJoursCalendaires := dateSup - dateInf;
--pour chaque jour on regarde si celui-ci est travaillé ou pas
FOR i IN 1..nbJoursCalendaires LOOP
IF FUN_JOUR_FERIE(dateTemp,0) = 'X' THEN
nbReturn := nbReturn + 1;
END IF;
dateTemp := dateTemp + 1;
END LOOP;
RETURN (nbReturn);
END FUN_NB_JOURS_OUVRES;
/
29 nov. 2004 à 13:54
Pour ceux qui cherchent à récuperer ce type d'information, je vous invite à consulter l'article suivant :
- http://www.asp-php.net/scripts/asp.net/table_sql_temps.php
C'est dans le même principe mais avec un suivi plus poussé pour la définition des statut de chaque jour. En revanche ca permet de créer une table et non d'être dynamique comme l'est cette fonction. Il faut donc réfléchir aux besoins.
Romelard Fabrice.
26 nov. 2004 à 14:12
14/07 pas ferie dans les autres pays
21/07 ferie en Belgique
24/06 ferie au Luxembourg
26/12 ferie au Luxembourg
...
Tu pourai ajouter un parametre pour choisir le pays
Glplpmat
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.