--计算当前日期的上周时间段
select (trunc(sysdate-7,'DD')-to_char(sysdate-7,'D')+1) as last_week_start_date,(trunc(sysdate-7,'DD')-to_char(sysdate-7,'D')+7) as last_week_end_date from dual
--根据年、月、周、星期计算日期
CREATE OR REPLACE FUNCTION get_date(y number,
m number,
idx number,
dow NUMBER
)
return date
ISv_date DATE;v_cnt NUMBER := 0;
BEGINIF idx NOT BETWEEN 1 AND 5 THEN RETURN NULL;END IF;v_date := TO_DATE( y || '-' || m, 'YYYY-MM' ) - 1;WHILE TRUE LOOPSELECT next_day( v_date , dow )INTO v_dateFROM dual ;v_cnt := v_cnt + 1;IF idx = v_cnt THEN EXIT;END IF;END LOOP;RETURN v_date;
END;