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 解决方案: |
|
|
|
|
|