Nombre des jours ouvrable

Contenu du snippet

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);

A voir également

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.