当前位置: 代码迷 >> SQL >> 用sql兑现通过已知的年,月,第几周和周几,得到具体的日期
  详细解决方案

用sql兑现通过已知的年,月,第几周和周几,得到具体的日期

热度:12   发布时间:2016-05-05 14:47:16.0
用sql实现通过已知的年,月,第几周和周几,得到具体的日期
CREATE OR REPLACE FUNCTION get_date2(y   number,
                                     m   number,
                                     idx number, --  第几个n
                                     dow NUMBER --  星期 m
                                     ) 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 v_date;
END;
  相关解决方案