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 ?
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 :
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!