我正在尝试计算 Oracle select 中两个日期之间的工作日。当我的计算给出给定日期的大多数结果时,我已经到了这一点(我将它与 NETWORKDAYS 在 excel 中进行比较)但有时它从 2 天到 -2 天不等 - 我不知道为什么......

这是我的代码:

SELECT
((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) as BusinessDays
FROM TABLE

谢谢!

最佳答案

解决方案,最后:

SELECT OrderNumber, InstallDate, CompleteDate,
  (TRUNC(CompleteDate) - TRUNC(InstallDate) ) +1 -
  ((((TRUNC(CompleteDate,'D'))-(TRUNC(InstallDate,'D')))/7)*2) -
  (CASE WHEN TO_CHAR(InstallDate,'DY','nls_date_language=english')='SUN' THEN 1 ELSE 0 END) -
  (CASE WHEN TO_CHAR(CompleteDate,'DY','nls_date_language=english')='SAT' THEN 1 ELSE 0 END) as BusinessDays
FROM Orders
ORDER BY OrderNumber;

感谢您的所有回复!

关于sql - 在 Oracle SQL 中计算工作日(无函数或过程),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14898357/

10-13 08:13
查看更多