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 20 687 fois - Téléchargée 1 574 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
frangipane44 Messages postés 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 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és 70 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 11 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

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;
/
cs_fabrice69 Messages postés 1765 Date d'inscription jeudi 12 octobre 2000 Statut Membre Dernière intervention 11 décembre 2013 5
29 nov. 2004 à 13:54
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.
glplpmat Messages postés 70 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 2 octobre 2006 1
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

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.