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

)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容