Maison >base de données >tutoriel mysql >Comment calculer avec précision les jours ouvrables entre deux dates dans Oracle SQL sans utiliser de fonctions ou de procédures ?

Comment calculer avec précision les jours ouvrables entre deux dates dans Oracle SQL sans utiliser de fonctions ou de procédures ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 03:53:39223parcourir

How to Accurately Calculate Business Days Between Two Dates in Oracle SQL Without Using Functions or Procedures?

Calcul des jours ouvrés dans Oracle SQL (sans fonctions ni procédures)

Lors du calcul des jours ouvrés entre deux dates dans Oracle SQL à l'aide de la formule :

((to_char(CompleteDate,'J') - to_char(InstallDate,'J')) 1) - (((to_char(CompleteDate,'WW') (52 ((to_char(CompleteDate,'YYYY') - to_char(InstallDate,'YYYY'))))) - to_char(InstallDate,'WW' ))2)

peut donner des résultats pour la plupart précis, il s'écarte parfois de 2 jours ou moins. Cette incohérence vient du fait de ne pas tenir compte des facteurs suivants :

  • La formule suppose que tous les mois comportent 30 jours, ce qui n'est pas vrai.
  • Elle exclut les week-ends (samedi et dimanche).

Pour répondre à ces problématiques, une formule plus précise est :

(TRUNC(CompleteDate) - TRUNC(InstallDate) ) 1 -
((((TRUNC(CompleteDate,'D'))-(TRUNC(InstallDate,'D')))/ 7)*2) -
(CAS QUAND TO_CHAR(InstallDate,'DY','nls_date_lingual=english')='SUN' THEN 1 ELSE 0 END) -
(CASE WHEN TO_CHAR(CompleteDate,'DY','nls_date_lingual=english')='SAT' THEN 1 ELSE 0 END)

Ici, TRUNC() supprime le composant horaire à partir des dates, et TO_CHAR() extrait le jour de la semaine. Le calcul intègre désormais le nombre de jours entre les dates tronquées, soustrait les week-ends et ajuste les dates de début ou de fin du week-end.

En intégrant ces améliorations, la formule calcule avec précision les jours ouvrables, en s'alignant sur la fonction NETWORKDAYS dans Excel. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn