美文网首页
每月[1,15)获取本月与上月数据,[15,月底]获取本月数据

每月[1,15)获取本月与上月数据,[15,月底]获取本月数据

作者: honest涛 | 来源:发表于2021-02-05 16:20 被阅读0次

一、需求描述:

如果当前时间是[1号,15号),需要清理上月与本月数据;
如果当前时间是[15号,月底],需要清理本月数据;
因此,需要获取相应月份的数据。

二、准备数据

create table TEST
(
  load_date VARCHAR2(8)
);
insert into TEST (load_date)
values ('20200131');
insert into TEST (load_date)
values ('20200229');
insert into TEST (load_date)
values ('20200331');
insert into TEST (load_date)
values ('20200430');
insert into TEST (load_date)
values ('20200531');
insert into TEST (load_date)
values ('20200630');
insert into TEST (load_date)
values ('20200731');
insert into TEST (load_date)
values ('20200831');
insert into TEST (load_date)
values ('20200930');
insert into TEST (load_date)
values ('20201031');
insert into TEST (load_date)
values ('20201130');
insert into TEST (load_date)
values ('20201231');
insert into TEST (load_date)
values ('20210131');
insert into TEST (load_date)
values ('20210228');
commit;

三、编码:

-- 不论当前日期是否小于14号 本月最后一天都必须取
TRUNC(SYSDATE,'MM')--本月第一天
ADD_MONTHS(TRUNC(SYSDATE,'MM'),1)-1--下个月第一天-1 等于本月最后一天
-- 条件:取本月最后一天和当前日期减去月末最后一天小于14天的数据
WHERE (SYSDATE- TO_DATE(LOAD_DATE,'YYYYMMDD')<= 14 OR LOAD_DATE = TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE,'MM'),1)-1,'YYYYMMDD'))

SELECT
 * 
FROM
 TEST
WHERE
 ((
   TO_DATE( '20200113', 'YYYYMMDD' ) - TO_DATE( LOAD_DATE, 'YYYYMMDD' ) >= 1 
   AND TO_DATE( '20200113', 'YYYYMMDD' ) - TO_DATE( LOAD_DATE, 'YYYYMMDD' ) <= 14 
  ) 
 OR LOAD_DATE = TO_CHAR( ADD_MONTHS( TRUNC( TO_DATE( '20200113', 'YYYYMMDD' ), 'MM' ), 1 ) - 1, 'YYYYMMDD' ));

TRUNC函数用法:https://www.cnblogs.com/mingo-z/p/12496179.html

相关文章

网友评论

      本文标题:每月[1,15)获取本月与上月数据,[15,月底]获取本月数据

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