周
DECLARE
V_LAST_WEEK_DAY VARCHAR2(100);-- 上周一 年月日
V_LAST_YERA_MONTH VARCHAR2(100);-- 上周一 年月
V_LAST_DAY NUMBER;-- 上周一 日
V_LAST_MONTH NUMBER;-- 上周一 月
V_YERA_MONTH VARCHAR2(100);-- 本周一 月日
V_MONTH NUMBER;-- 本周一 月
V_MONTH_DAY_NUM NUMBER;-- 指定月份的天数
V_DAY_NUM NUMBER;-- 天数相差
V_MONTH_TIME VARCHAR2(100);-- 哪一月
BEGIN
--获取上周一 年月日
SELECT TO_CHAR(TRUNC(SYSDATE,'IW')-7,'YYYY-MM-DD') INTO V_LAST_WEEK_DAY FROM DUAL;
--获取上周一 年月
SELECT TO_CHAR(TRUNC(SYSDATE,'IW')-7,'YYYY-MM') INTO V_LAST_YERA_MONTH FROM DUAL;
--获取上周一 月
SELECT TO_CHAR(TRUNC(SYSDATE,'IW')-7,'MM') INTO V_LAST_MONTH FROM DUAL;
--获取上周一 日
SELECT TO_CHAR(TRUNC(SYSDATE,'IW')-7,'DD') INTO V_LAST_DAY FROM DUAL;
--本周一 年月
SELECT TO_CHAR(TRUNC(SYSDATE,'IW'),'YYYY-MM') INTO V_YERA_MONTH FROM DUAL;
DBMS_OUTPUT.PUT_LINE('上周一 年月日:' || V_LAST_WEEK_DAY||' 本周一 年月:' || V_YERA_MONTH);
--获取本周一 月
SELECT TO_CHAR(TRUNC(SYSDATE,'IW'),'MM') INTO V_MONTH FROM DUAL;
IF V_MONTH = V_LAST_MONTH THEN
V_MONTH_TIME := V_YERA_MONTH;
ELSE
--获取指定月份的天数
SELECT ADD_MONTHS(TO_DATE(V_LAST_YERA_MONTH,'YYYY-MM'),1)-TO_DATE(V_LAST_YERA_MONTH,'YYYY-MM') INTO V_MONTH_DAY_NUM FROM DUAL;
DBMS_OUTPUT.PUT_LINE('月份:' || V_LAST_YERA_MONTH||' 天数:' || V_MONTH_DAY_NUM);
--用上一周月份的天数减去上一周对应的日 若结果大于等于3,则为上月周,若结果小于3,则为本月周
SELECT V_MONTH_DAY_NUM-V_LAST_DAY INTO V_DAY_NUM FROM DUAL;
DBMS_OUTPUT.PUT_LINE('天数相差:' || V_DAY_NUM);
IF V_DAY_NUM<3 THEN
V_MONTH_TIME := V_YERA_MONTH;
ELSE
V_MONTH_TIME := V_LAST_YERA_MONTH;
END IF;
END IF;
DBMS_OUTPUT.PUT_LINE('入库月份:' || V_MONTH_TIME);
END;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗