回答

收藏

Oracle查询以获取两个日期之间的工作日数,不包括节假日

技术问答 技术问答 266 人阅读 | 0 人回复 | 2023-09-12

我们正在使用它Oracle 11。
- t, j1 D4 J6 v7 V2 b在我们的CASE WHEN在句子中,我需要检查两个日期之间的天数是否超过3个工作日(所以不包括周末和假期)。+ e2 @. w( O' g
                CASE WHEN end_date - start_date > 3  THEN 0  --> this includes weekend         and holidaysWHEN CODE = 1 THEN 1WHEN CODE =2 THEN 2ELSE 3END AS MyColumn假设我有一个假日日历表,表HolidayDates列包括12/25 / 2018、12 / 31/2018等所有假期。
$ w% f9 j$ }+ m; X% CHolidayDates12/25/201812/31/2018因此,如果
3 x7 S" Z1 o3 IDate1 = 1/2/19(星期三)  J; {; [+ c3 g1 d: V: n
日期2 = 12/27/18(星期四): I$ P. c7 F; N
日期1和日期2之间的工作日为3天(12 / 27、12 / 28和12/31)。
. S& W7 g: w* H以下查询将不包括周末的工作日。
* W0 [4 o( O4 _, x5 I在此查询中如何排除假期?$ G+ _1 n" i: F# V$ S8 n3 {/ ?6 z
SELECT TO_CHAR( start_date,'YYYY-MM-DD "("DY")"') AS start_date,  ( TRUNC( end_date,'IW' ) - TRUNC( start_date,'IW' ) ) *  5 / 7                                                                                                                                                                                                                                                                                                                                                            LEAST( TRUNC( end_date   ) - TRUNC( end_date,  'IW - LEAST( TRUNC( start_date ) - TRUNC( start_date,'IW5 )AS Num_Week_DaysFROM   table_name;谢谢你。* a: ]. J& U4 c2 ?" C/ J6 c
                                                               
5 Y" e8 z& a' E7 m    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则