select to_char(sysdate,'iw') from dual; --本周是第几个自然周
select to_char(sysdate,'yyyy') into v_sbzq_nf from dual; -- 当前年份
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'),'IW'),'yyyy-MM-dd') FROM DUAL;--本周的起始时间(本周周一日期)
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'YYYY-MM-DD'),'IW') + 6,'yyyy-MM-dd') FROM DUAL;--本周的结束时间(本周周日日期)
下面是使用存储过程向数据库中插入一条数据
数据格式 :上报周期 起始时间结束时间
xxxx年第xx周 xx.xx xx.xx
存储过程如下:
create or replace procedure PRC_T_SJSB_ZYGYPJG is
v_sbzq_zs varchar2(20);--上报周期周数
v_sbzq_nf varchar2(10); --上报周期年份
v_start varchar2(10); --起始月份
v_end varchar2(10); --结束月份
v_sbzq varchar2(20); --上报周期
begin
select to_char(sysdate,'iw') into v_sbzq_zs from dual; --本周是第几个自然周
select to_char(sysdate,'yyyy') into v_sbzq_nf from dual;
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'yyyy-MM-dd'),'IW'),'yyyy-MM-dd') into v_start FROM DUAL;--本周的起始时间(本周周一日期)
SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,'yyyy-MM-dd'),'YYYY-MM-DD'),'IW') + 6,'yyyy-MM-dd') into v_end FROM DUAL;--本周的结束时间(本周周日日期)
v_start:=substr(v_start,6);
v_end :=substr(v_end,6);
v_start :=replace(v_start,'/','.');
v_start :=replace(v_start,'-','.');
v_end :=replace(v_end, '/','.');
v_end :=replace(v_end, '-','.');
v_sbzq :=v_sbzq_nf||'年第'||v_sbzq_zs||'周';
insert into T_SJSB_ZYGYPJG (sbzq,sbzt,startdate,enddate) values(v_sbzq,'0',v_start,v_end);
commit;
end PRC_T_SJSB_ZYGYPJG;