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

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

Mary-Kate Olsen
发布: 2025-01-04 03:53:39
原创
245 人浏览过

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

在 Oracle SQL 中计算工作日(不带函数或过程)

在 Oracle SQL 中使用以下公式计算两个日期之间的工作日:

((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)

可能会产生结果大多准确,偶尔会有 2 天或更短的偏差。这种不一致源于忽略以下因素:

  • 公式假设所有月份都有 30 天,这是不正确的。
  • 它不包括周末(周六和周日)。

为了解决这些问题,需要更准确的公式是:

(TRUNC(CompleteDate) - TRUNC(InstallDate) ) 1 -
((((TRUNC(CompleteDate,'D'))-(TRUNC(InstallDate,'D')))/ 7)*2) -
(情况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)

这里,TRUNC() 删除了日期中的时间部分,TO_CHAR() 提取工作日。现在,计算包含了截断日期之间的天数、减去周末,并调整周末开始或结束日期。

通过合并这些改进,该公式可以准确计算工作日,与 Excel 中的 NETWORKDAYS 函数保持一致.

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

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