17,140
社区成员




CREATE OR REPLACE FUNCTION get_date2(
/*
*已知 ***某年某月的第n个星期w***,算出具体日期。
*/
y number, --年
m number, --月
idx number, -- 第几个n 周
dow NUMBER -- 星期 m (1 = 星期日, 7=星期六)
)
RETURN DAte
IS
v_date DATE;
v_cnt NUMBER := 0;
BEGIN
IF idx NOT BETWEEN 1 AND 5 THEN RETURN NULL;
END IF;
-- 上个月的最后一天.
v_date := TO_DATE( y || '-' || m, 'YYYY-MM' ) - 1;
WHILE TRUE LOOP
SELECT next_day( v_date , dow )
INTO v_date
FROM dual ;
v_cnt := v_cnt + 1;
IF idx = v_cnt THEN EXIT;
END IF;
END LOOP;
--RETURN to_char(v_date,'DD')*1;
RETURN v_date;
END;