美文网首页
Oracle 跳过周末的sql

Oracle 跳过周末的sql

作者: 林伟成 | 来源:发表于2020-05-26 09:38 被阅读0次

    (Oracle 跳过查询周末的数据,并在下周一至五查找本应该在上周末的数据)


    背景:有个需求是T+X day 发邮件,但是要跳过周末发邮件

    变量及其意义:

        CREATE_DATE:[TABLE_NAME] 的字段

        BRING_UP:T + X 中的X,T 指CREATE_DATE,X 指几天

    SELECT

    id,

    FIRST_BRING_UP,

    CREATE_DATE

    FROM

    FO_BILLING_CYCLE

    WHERE

    -- ceil(FIRST_BRING_UP/7): 计算FIRST_BRING_UP 跨度多少个星期, 1个星期要延后2天发邮件

    --查出所有在工作日的数据

    (

    --CREATE_DATE 与当前日期在同一周

    NEXT_DAY( trunc(CREATE_DATE) ,2 ) = NEXT_DAY( trunc(SYSDATE) ,2 )

    AND trunc( CREATE_DATE + FIRST_BRING_UP  ) = trunc( SYSDATE )

    --'1':周日,'7':周六

    AND to_char( trunc( SYSDATE ), 'd' ) NOT IN ( '1', '7' )

    )

    OR (

    --CREATE_DATE 与当前日期不在同一周

    NEXT_DAY( trunc(CREATE_DATE) ,2 ) <> NEXT_DAY( trunc(SYSDATE) ,2 )

    AND trunc( CREATE_DATE + FIRST_BRING_UP + 2*ceil( FIRST_BRING_UP / 7 ) ) = trunc( SYSDATE )

    AND to_char( trunc( SYSDATE ), 'd' ) NOT IN ( '1', '7' )

    )

    相关文章

      网友评论

          本文标题:Oracle 跳过周末的sql

          本文链接:https://www.haomeiwen.com/subject/cnqmahtx.html