nombre des jours ouvrable en Tunisie entre deux dates,
les jours ouvrables hijri et national
plus le samedi et dimanche
base oracle
Source / Exemple :
WITH MYDATE
AS (SELECT ( Trunc( :AD_DAT_DEB ) + Level - 1 ) JOUR
FROM Dual
CONNECT BY Level <= Round( Trunc( :AD_DAT_FIN ) - Trunc( :AD_DAT_DEB ) ) + 1)
, ANNEES
AS (SELECT ( To_Char( :AD_DAT_DEB, 'RRRR' ) + Level - 1 ) ANNEE
FROM Dual
CONNECT BY Level <= Round( To_Char( :AD_DAT_FIN, 'RRRR' ) - To_Char( :AD_DAT_DEB, 'RRRR' ) ) + 1)
, ANNEES_H
AS (SELECT ( To_Char( :AD_DAT_DEB, 'YYYY', 'NLS_CALENDAR=''Arabic Hijrah''' ) + Level - 1 ) ANNEE_H
FROM Dual
CONNECT BY Level <=
Round(
To_Char( :AD_DAT_FIN, 'YYYY', 'NLS_CALENDAR=''Arabic Hijrah''' )
- To_Char( :AD_DAT_DEB, 'YYYY', 'NLS_CALENDAR=''Arabic Hijrah''' ) )
+ 2)
, JOURS_FERIES_H
AS (SELECT ' ras el 3am ' NHAR
, To_Date( '01/01/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' ) J_F_H
, ANNEE_H
FROM ANNEES_H
UNION ALL
SELECT ' 3ied Kbir 1' NHAR
, To_Date( '10/12/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' ) J_F_H
, ANNEE_H
FROM ANNEES_H
UNION ALL
SELECT ' 3ied Kbir 2' NHAR
, To_Date( '11/12/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' ) J_F_H
, ANNEE_H
FROM ANNEES_H
UNION ALL
SELECT ' 3ied sghir 1' NHAR
, To_Date( '01/10/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' ) J_F_H
, ANNEE_H
FROM ANNEES_H
UNION ALL
SELECT ' 3ied sghir 2' NHAR
, To_Date( '02/10/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' ) J_F_H
, ANNEE_H
FROM ANNEES_H
UNION ALL
SELECT ' mouled ' NHAR
, To_Date( '12/03/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' ) J_F_H
, ANNEE_H
FROM ANNEES_H
UNION ALL
SELECT ' 3ied sghir chak ' NHAR
, CASE
WHEN To_Char( To_Date( '01/10/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' ) - 1
, 'dd'
, 'NLS_CALENDAR=''Arabic Hijrah''' ) = 30 THEN
To_Date( '30/09/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' )
ELSE
To_Date( '03/10/' || ANNEE_H, 'dd/mm/yyyy', 'NLS_CALENDAR=''Arabic Hijrah''' )
END
J_F_H
, ANNEE_H
FROM ANNEES_H)
, JOURS_FERIES
AS (SELECT To_Date( '01/01/' || ANNEE, 'dd/mm/yyyy' ) J_F, '01 Janvier' NHAR FROM ANNEES
UNION ALL
SELECT To_Date( '14/01/' || ANNEE, 'dd/mm/yyyy' ) J_F, '14 Janvier' NHAR FROM ANNEES
UNION ALL
SELECT To_Date( '25/07/' || ANNEE, 'dd/mm/yyyy' ) J_F, '25 Juillet' NHAR FROM ANNEES
UNION ALL
SELECT To_Date( '13/08/' || ANNEE, 'dd/mm/yyyy' ) J_F, '13 Août' NHAR FROM ANNEES
UNION ALL
SELECT To_Date( '01/05/' || ANNEE, 'dd/mm/yyyy' ) J_F, '1 Mai ' NHAR FROM ANNEES
UNION ALL
SELECT To_Date( '09/04/' || ANNEE, 'dd/mm/yyyy' ) J_F, '9 Avril' NHAR FROM ANNEES
UNION ALL
SELECT To_Date( '20/03/' || ANNEE, 'dd/mm/yyyy' ) J_F, '20 Mars' NHAR FROM ANNEES)
SELECT Count( 1 ) NB_JOURS
FROM MYDATE
WHERE To_Char( JOUR, 'D' ) NOT IN (6, 7)
AND JOUR NOT IN (SELECT J_F FROM JOURS_FERIES)
AND JOUR NOT IN (SELECT J_F_H FROM JOURS_FERIES_H);
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.