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;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章