Oracle 跳过周末的sql

(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)