ORACLE & SQL SERVER 2K - FONCTION RETOURNANT LE STATUS (OUVRÉ, WE, FÉRIÉ) D'UNE

Signaler
Messages postés
70
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
2 octobre 2006
-
Messages postés
70
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27798-oracle-sql-server-2k-fonction-retournant-le-status-ouvre-we-ferie-d-une-date

Messages postés
70
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2012

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.
Messages postés
70
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
11 octobre 2012

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

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;
/
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
6
Pas mal du tout.
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.
Messages postés
70
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
2 octobre 2006
1
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

Glplpmat