oracle資料獲取當前自然周,當前周的起始和結束時間
阿新 • • 發佈:2019-01-30
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;