根据会计期间获取月度第一天,最后一天和年度第一天

简单的记录一下,以免忘记:

DECLARE
  V_PERIOD_BEGIN_DATE DATE;
  V_PERIOD_END_DATE   DATE;
  V_YEAR_BEGIN_DATE   DATE;
  V_PERIOD_NAME       VARCHAR2(20) := '2015-11';
BEGIN

  SELECT TO_DATE(V_PERIOD_NAME, 'YYYY-MM', 'NLS_DATE_LANGUAGE =American')
    INTO V_PERIOD_BEGIN_DATE
    FROM DUAL;
  DBMS_OUTPUT.PUT_LINE('会计期间第一天:' || V_PERIOD_BEGIN_DATE);

  SELECT LAST_DAY(TO_DATE(V_PERIOD_NAME,
                          'YYYY-MM',
                          'NLS_DATE_LANGUAGE =American'))
    INTO V_PERIOD_END_DATE
    FROM DUAL;
  DBMS_OUTPUT.PUT_LINE('会计期间最后一天:' || V_PERIOD_END_DATE);

  SELECT TO_DATE('01-JAN-' || SUBSTR(V_PERIOD_NAME, 3, 2),
                 'DD-MON-YY',
                 'NLS_DATE_LANGUAGE =American')
    INTO V_YEAR_BEGIN_DATE
    FROM DUAL;
  DBMS_OUTPUT.PUT_LINE('年度第一天:' || V_YEAR_BEGIN_DATE);
END;

结果:

会计期间第一天:01-11月-15
会计期间最后一天:30-11月-15
年度第一天:01-1月 -15

posted @ 2015-12-01 10:16  JOKER-ZHAO  阅读(522)  评论(0编辑  收藏  举报