Oracle
 sql >> Base de données >  >> RDS >> Oracle

Calcul des jours fériés :nombre de samedis et de dimanches dans la requête de plage de dates donnée dans Oracle

Vous pouvez utiliser le GÉNÉRATEUR DE RANG technique pour générer d'abord les dates pour une plage donnée, puis ne compter que les SAMEDIS et DIMANCHES .

Par exemple, cette requête me donnera le nombre total de samedis et dimanches entre le 1er janvier 2014 et le 31 décembre 2014 -

SQL> WITH DATA AS
  2    (SELECT to_date('01/01/2014', 'DD/MM/YYYY') date1,
  3      to_date('31/12/2014', 'DD/MM/YYYY') date2
  4    FROM dual
  5    )
  6  SELECT SUM(holiday) holiday_count
  7  FROM
  8    (SELECT
  9      CASE
 10        WHEN TO_CHAR(date1+LEVEL-1, 'DY','NLS_DATE_LANGUAGE=AMERICAN') IN ('SAT', 'SUN')
 11        THEN 1
 12        ELSE 0
 13      END holiday
 14    FROM data
 15      CONNECT BY LEVEL <= date2-date1+1
 16    )
 17  /

HOLIDAY_COUNT
-------------
          104

SQL>