没有周末预告片功能的两个日期之间存在差异

布莱斯

我有一个函数,但是它在oracle数据库的两个日期之间返回错误的数字。问题是当我在同一天有两个约会时。函数仅使用COUNT()函数来计算工作日数,因此只能将其取整。

如何修复此功能?

CREATE OR REPLACE
FUNCTION fn_GetBusinessDaysInterval
(
    v_Begin_Date DATE,
    v_End_Date DATE   
)
    RETURN NUMBER
AS
    v_DaysInbetween NUMBER := 0;
    v_BusDaysInbetween NUMBER := 0;

BEGIN
    WITH days
    AS
    (
        SELECT
            v_Begin_Date + seq AS day_date,
            to_char(v_Begin_Date + seq , 'D') day_of_week
        FROM
        (
            SELECT ROWNUM-1 seq
            FROM   ( SELECT 1
                     FROM   dual
                     --number of rows should be exactly the number of days between begin and end dates
                     CONNECT BY LEVEL <= (v_End_Date - v_Begin_Date) + 1
                   )
        )
        ORDER BY 1
    )
    SELECT
        v_End_Date - v_Begin_Date AS days_inbetween,
        count(1) business_days_inbetween
    INTO
        v_DaysInbetween,
        v_BusDaysInbetween        
    FROM
        days
    WHERE
        ---------------------------------------------------
        --...then exclude Sat and Sun
        ---------------------------------------------------
        days.day_of_week NOT IN (7,1)
        ---------------------------------------------------
        --...then exclude week-day holidays
        ---------------------------------------------------

        AND NOT EXISTS
            (
                SELECT SWIETO
                FROM DNI_SWIATECZNE ht
                WHERE ht.DATA = days.day_date
                --Optionally include Region!
            );        



    RETURN v_BusDaysInbetween;        
END; 
大力水手

我认为您需要考虑以下代码:

CREATE OR REPLACE FUNCTION FN_GETBUSINESSDAYSINTERVAL (
    V_BEGIN_DATE DATE,
    V_END_DATE DATE
) RETURN NUMBER AS
    V_DAYSINBETWEEN      NUMBER := 0;
    V_BUSDAYSINBETWEEN   NUMBER := 0;
BEGIN
    WITH DAYS AS (
        SELECT V_BEGIN_DATE + LEVEL AS DAY_DATE,
               TO_CHAR(V_BEGIN_DATE + LEVEL, 'D') DAY_OF_WEEK
          FROM DUAL
        CONNECT BY LEVEL <= ( V_END_DATE - V_BEGIN_DATE )
    )
    SELECT
        V_END_DATE - V_BEGIN_DATE AS DAYS_INBETWEEN, --total number of days in between
        SUM(CASE WHEN DAYS.DAY_OF_WEEK NOT IN( 7, 1 )
                 AND HT.DATA IS NULL THEN 1 END) BUSINESS_DAYS_INBETWEEN -- total number of business days inbetween
    INTO V_DAYSINBETWEEN, V_BUSDAYSINBETWEEN
    FROM DAYS LEFT
         JOIN DNI_SWIATECZNE HT ON HT.DATA = DAYS.DAY_DATE;

    RETURN COALESCE(V_BUSDAYSINBETWEEN, 0);

EXCEPTION 
    WHEN NO_DATA_FOUND THEN
    RETURN 0;
END;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

两个日期之间的差异(不包括周末)

来自分类Dev

仅在存在预告片时在预告片和%s之间添加空间

来自分类Dev

我正在计算两个日期之间的天数,而没有周末从javascript中的datepicker获取

来自分类Dev

R:两个日期之间的差异,不包括周末和特定于州的假期列表

来自分类Dev

没有 ID 的 SQLite 中两个单独行之间的日期差异

来自分类Dev

如果存在于php中,则获取两个日期之间的周末

来自分类Dev

我想获取所有日期,不包括 python 中两个日期之间的周末

来自分类Dev

Python Pandas 查找两个日期列之间的所有周末/日期

来自分类Dev

带有子查询的两个日期之间的差异

来自分类Dev

如何检查是否在php中两个日期之间有一个周末?

来自分类Dev

查找Pyspark中两个日期之间的周末天数

来自分类Dev

查找Pyspark中两个日期之间的周末天数

来自分类Dev

如何计算两个日期之间的所有假期,不包括周末的假期-Excel

来自分类Dev

SQL:两个日期之间的差异

来自分类Dev

Android两个日期之间的差异

来自分类Dev

得到两个日期之间的差异

来自分类Dev

两个日期之间的Python差异

来自分类Dev

两个日期之间的年份差异

来自分类Dev

两个日期之间的差异

来自分类Dev

带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

来自分类Dev

带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

来自分类Dev

我如何看到带有 curl 的预告片标题

来自分类Dev

查找两个日期之间的月份和日期差异

来自分类Dev

如何返回两个日期之间的周末日期列表

来自分类Dev

如何从datetime值中提取日期以检查两个日期之间的周末?

来自分类Dev

找到带有时间戳的两个日期之间的分钟差异?

来自分类Dev

MySQL过程更新所有记录的两个日期之间的差异

来自分类Dev

使用Apple Numbers,有没有办法显示年份中两个日期之间的差异(带小数点)?

来自分类Dev

PostgreSQL中两个日期之间的差异

Related 相关文章

  1. 1

    两个日期之间的差异(不包括周末)

  2. 2

    仅在存在预告片时在预告片和%s之间添加空间

  3. 3

    我正在计算两个日期之间的天数,而没有周末从javascript中的datepicker获取

  4. 4

    R:两个日期之间的差异,不包括周末和特定于州的假期列表

  5. 5

    没有 ID 的 SQLite 中两个单独行之间的日期差异

  6. 6

    如果存在于php中,则获取两个日期之间的周末

  7. 7

    我想获取所有日期,不包括 python 中两个日期之间的周末

  8. 8

    Python Pandas 查找两个日期列之间的所有周末/日期

  9. 9

    带有子查询的两个日期之间的差异

  10. 10

    如何检查是否在php中两个日期之间有一个周末?

  11. 11

    查找Pyspark中两个日期之间的周末天数

  12. 12

    查找Pyspark中两个日期之间的周末天数

  13. 13

    如何计算两个日期之间的所有假期,不包括周末的假期-Excel

  14. 14

    SQL:两个日期之间的差异

  15. 15

    Android两个日期之间的差异

  16. 16

    得到两个日期之间的差异

  17. 17

    两个日期之间的Python差异

  18. 18

    两个日期之间的年份差异

  19. 19

    两个日期之间的差异

  20. 20

    带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

  21. 21

    带有两个表和两个字段的两个日期之间的PostgreSQL日期差异

  22. 22

    我如何看到带有 curl 的预告片标题

  23. 23

    查找两个日期之间的月份和日期差异

  24. 24

    如何返回两个日期之间的周末日期列表

  25. 25

    如何从datetime值中提取日期以检查两个日期之间的周末?

  26. 26

    找到带有时间戳的两个日期之间的分钟差异?

  27. 27

    MySQL过程更新所有记录的两个日期之间的差异

  28. 28

    使用Apple Numbers,有没有办法显示年份中两个日期之间的差异(带小数点)?

  29. 29

    PostgreSQL中两个日期之间的差异

热门标签

归档