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

Le jour ouvrable suivant (du lundi au vendredi) dans Oracle ?

Ces choses sont normalement faites avec un tableau qui répertorie tous les jours ouvrables d'une année plutôt qu'avec une formule naïve comme :

CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5 
  THEN 1 + (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) 
  ELSE 1 
END --(on monday to thursday this returns 2 to 5, on fri/sat/sun this returns 1)

CASE WHEN (1 + TRUNC (SYSDATE) - TRUNC (SYSDATE, 'IW')) < 5 
  THEN TRUNC (SYSDATE) + 1 
  ELSE TRUNC (SYSDATE + 4), 'IW')  
END --(on monday to thursday this returns tomorrow's date, on fri/sat/sun it returns next monday's date)

L'utilisation d'un tableau vous permet de prendre en compte des éléments tels que les jours fériés, les fêtes nationales, les fêtes religieuses, les jours de vote, les jours de deuil, les jours de congé ponctuels pouvant survenir pour des raisons professionnelles ou politiques, etc. La maintenance du tableau devient alors une tâche importante. Récupérer le jour ouvrable suivant consiste essentiellement à interroger la table pour le MIN(date) WHERE date > current_date