Oracle & sql server 2k - fonction retournant le status (ouvré, we, férié) d'une date

Soyez le premier à donner votre avis sur cette source.

Vue 19 469 fois - Téléchargée 1 511 fois

Description

Pour Oracle: JourFerie(DATE votreDate, INTEGER samedi Férié ou non) VARCHAR2
script d'installation JF_Oracle.sql

Pour SQL Server: JourFerie(DateTime votreDate, Intsamedi Férié ou non) VARCHAR
script d'installation JF_SQL2k.tsql

Les valeurs de retour sont:
X : jour ouvré
WE : week end
JF : jour férié

Codes Sources

A voir également

Ajouter un commentaire Commentaires
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
5
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

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.