本文主要是介绍创建一个表循环插入某个月或整年的日期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
--写查询或存储过程时,有时可能会需要创建一个中间表,比如日期,下面是循环插入当月所有日期和整年所有日期的SQL
--创建会话级临时表用来存储日期,不过我这里日期存储的是varchar2 类型
CREATE GLOBAL TEMPORARY TABLE RQ(ID NUMBER PRIMARY KEY ,SJ VARCHAR2(20))
ON COMMIT PRESERVE ROWS
SELECT * FROM RQ--循环插入日期 插入当月的日期
DECLARE
C_I NUMBER :=1;
V_I NUMBER ;
V_FIRSTDAY VARCHAR2(20);
V_LASTDAY VARCHAR(20);
BEGINSELECT TO_CHAR(SYSDATE,'YYYY-MM')||'-' INTO V_FIRSTDAY FROM DUAL;SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYY-MM-DD') INTO V_LASTDAY FROM DUAL;SELECT CEIL(LAST_DAY(SYSDATE)-TRUNC(SYSDATE,'MM'))+1 INTO V_I FROM DUAL;LOOPINSERT INTO RQ (ID,SJ) VALUES(C_I,V_FIRSTDAY||TO_CHAR(C_I));C_I:=C_I+1;EXIT WHEN C_I=V_I;END LOOP;END;--循环插入日期 插入某年的日期
DECLARE
C_I NUMBER :=0;
V_I NUMBER ;
V_FIRSTDAY DATE;
V_LASTDAY DATE;
BEGINSELECT TRUNC(TO_DATE('2015','YYYY'),'YYYY') INTO V_FIRSTDAY FROM DUAL;SELECT ADD_MONTHS(TRUNC(TO_DATE('2015','YYYY'),'YYYY'),12) INTO V_LASTDAY FROM DUAL;SELECT V_LASTDAY-V_FIRSTDAY INTO V_I FROM DUAL;LOOPINSERT INTO RQ (ID,SJ) VALUES(C_I,TO_CHAR(V_FIRSTDAY+C_I,'YYYY-MM-DD'));C_I:=C_I+1;EXIT WHEN C_I=V_I;END LOOP;END;
这篇关于创建一个表循环插入某个月或整年的日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!