【问题标题】:Count Days between two dates and excluding Weekends计算两个日期之间的天数,不包括周末
【发布时间】:2019-04-15 11:24:24
【问题描述】:

如何计算两个日期之间的天数,不包括周末?

我有以下数据,我可以通过 ClosingDate - ActivityDate 简单地获取 TAT 值。但是,我不想考虑周六/周日。

+-------------------------+--------+-------------------------+------+
|      ActivityDate       | TypeID |       ClosedDate        | TAT  |
+-------------------------+--------+-------------------------+------+
| Wednesday, May 02, 2018 |   2502 | Wednesday, May 09, 2018 | 7.00 |
| Monday, May 07, 2018    |   2503 | Thursday, May 10, 2018  | 3.00 |
| Tuesday, May 08, 2018   |   2504 | Friday, May 11, 2018    | 3.00 |
| Wednesday, May 09, 2018 |   2505 | Thursday, May 10, 2018  | 1.00 |
| Thursday, May 10, 2018  |   2506 | Friday, May 11, 2018    | 1.00 |
| Friday, May 11, 2018    |   2507 | Thursday, May 17, 2018  | 6.00 |
| Thursday, May 10, 2018  |   2508 | Tuesday, May 15, 2018   | 5.00 |
| Monday, May 14, 2018    |   2509 | Wednesday, May 16, 2018 | 2.00 |
| Monday, May 14, 2018    |   2510 | Thursday, May 17, 2018  | 3.00 |
+-------------------------+--------+-------------------------+------+

非常感谢任何帮助。

【问题讨论】:

标签: sql oracle oracle11g


【解决方案1】:

这样的事情怎么样?

我只提取了您数据集的一部分。思路是:查看天数(to_char(date, 'd'));如果活动日期 (AD) 的天数大于关闭日期 (CD),则删除另外两天(周末)。

如果这些日期中的一个(或两个)落在星期六或星期日,则可能需要进行调整(但根据您的示例数据,它们没有)。

SQL> with test (ad, cd) as
  2    (select date '2018-05-02', date '2018-05-09' from dual union all
  3     select date '2018-05-11', date '2018-05-17' from dual union all
  4     select date '2018-05-10', date '2018-05-15' from dual
  5    ),
  6  day_num as
  7    (select ad, cd,
  8      to_char(ad, 'd') addn, to_char(cd, 'd') cddn,
  9      to_char(ad, 'dy') ady, to_char(cd, 'dy') cdy
 10     from test
 11    )
 12  select ad, cd,
 13    cd - ad - case when addn > cddn then 2 else 0 end diff
 14  from day_num;

AD              CD                    DIFF
--------------- --------------- ----------
02.05.2018, wed 09.05.2018, wed          7
11.05.2018, fri 17.05.2018, thu          4
10.05.2018, thu 15.05.2018, tue          3

SQL>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多