首页 > 数据库 > mysql教程 > 如何在不使用函数或过程的情况下在 Oracle SQL 中准确计算工作日?

如何在不使用函数或过程的情况下在 Oracle SQL 中准确计算工作日?

Mary-Kate Olsen
发布: 2024-12-31 08:26:10
原创
781 人浏览过

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

在 Oracle SQL 中计算工作日:无需函数或过程的改进公式

在 Oracle SQL 中计算两个日期之间的工作日对于各种商业应用。这是一种无需依赖内置函数或过程即可实现此目的的增强方法。

您提供的先前代码在计算中偶尔会出现差异。要解决此问题,请考虑进行以下修改:

  • 使用 TRUNC(CompleteDate) 和 TRUNC(InstallDate) 截断日期以删除时间部分并仅关注工作日。
  • 计算使用 (TRUNC(CompleteDate,'D'))-(TRUNC(InstallDate,'D')) 计算工作日差异并除以 7考虑周末。
  • 应用条件逻辑来调整星期日或星期六作为时间段的开始或结束,因为它们不被视为工作日。

以下是精炼代码:

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;
登录后复制

这种增强的计算应提供准确的工作日结果,与 Excel 的 NETWORKDAYS 函数保持一致。

以上是如何在不使用函数或过程的情况下在 Oracle SQL 中准确计算工作日?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板