sql - 在 Oracle 中计算两个字段之间的工作日 (MF)
问题描述
我只需要计算两个字段之间的工作日。以下语句有效,但我只需要它来计算工作日(MF)。不知道该怎么做。
Select
TRUNC(HF.ACTUL_DSCHRG_DTTM) - TRUNC(HF.ACTUL_ADMIS_DTTM) AS DAYS
from Table1
解决方案
此类问题通常通过参考自然断点最容易解决。在这种情况下,自然断点是 ISO 周的开始。您可以使用trunc
格式iw
模型来截断到这样的自然点。
如果trunc(discharge_dttm)
和trunc(admission_dttm)
都是星期一的午夜,则计算很简单:从出院日期中减去入院日期,除以 7 并乘以 5。
如果出院日期不是星期一,则先计算出院周的星期一之前的 MF,然后将 MF 天数相加直到出院。那简直就是
least(5, trunc(discharge_dttm) - trunc(discharge_dttm, 'iw'))
同样,您可以计算入学周的星期一和实际入学日期之间的 MF 天数。
最后,把所有东西放在一起。该公式巧妙地分为三个部分:
(trunc(discharge_dttm, 'iw') - trunc(admission_dttm, 'iw')) * 5 / 7 +
least(5, trunc(discharge_dttm) - trunc(discharge_dttm, 'iw')) -
least(5, trunc(admission_dttm) - trunc(admission_dttm, 'iw'))
(注意,很明显,第一个“调整到星期一”被添加了,但第二个被减去了!)
推荐阅读
- c++ - Libxml2:静态或非静态
- java - 计算通用数组的平均值方法
- javascript - 当用户单击浏览器后退按钮时如何移动到根路由?
- impala - 如何使用 HUE 在 Impala 查询中设置变量?
- python - 删除像 RTL 这样的文本方向标记,而不删除所有非 ascii 字符
- python - Dunders 不再在 Pycharm 中合并?
- flutter - 导航到另一个 pageView 或任何 View 时,Bloc 小部件 reftech 数据(重建)
- javascript - Gatsby:功能只是在主页上,在其他上停止,在重新访问主页时重新启动
- r - 如何控制条形图中值标签的小数位
- amazon-web-services - 恢复出厂设置 AWS 账户