ORACLE - 求 某年 -某月/某周 最后一天日期

求 某年某周 的最后一天; 周定义: 每年1月1号 为第一周的开始,周一为周的第一天


CREATE OR REPLACE FUNCTION func_week_lastdate(ye IN NUMBER, we IN NUMBER) RETURN VARCHAR2 IS
 first_week_day NUMBER;
 sub_days NUMBER;
 week_lastdate VARCHAR2(12);
BEGIN
  -- 1、取0101 为第一周的星期几 (1为周日)
  select to_char(to_date(ye||'-01-01','yyyy-mm-dd'),'d') into first_week_day from dual;
  if first_week_day = 1 then
    sub_days :=7;
  else 
    sub_days :=first_week_day-1; 
  end if; 
  
  -- 2、0101 + we*7 - sub_days;
  select to_char(to_date(ye||'-1-1','yyyy-mm-dd')+(we*7)-sub_days,'yyyy-mm-dd') into week_lastdate from dual; 
  
  -- 3、判断是否到下一年
  if to_date(week_lastdate,'yyyy-mm-dd') > to_date(ye||'-12-31','yyyy-mm-dd') then
    week_lastdate := ye||'-12-31';
  end if;
  
  RETURN week_lastdate;
  
EXCEPTION
  WHEN OTHERS THEN
    RETURN NULL;
END func_week_lastdate;


求 某年 某月的最后一天日期


select to_char(LAST_DAY(to_date(&ye|| '-' || &mo,'yyyy-mm')),'yyyy-mm-dd') from dual;

发布了73 篇原创文章 · 获赞 78 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/SHIYUN123zw/article/details/100076255