SQLで「年度」を求める | 闇プロジェクト::zoe

SQLで「年度」を求める

「YYYY/MM/DD」から「年度」を求めるSQLを書いた。
ORACLEのファンクション。


/*------------------------------------
関数名称:FN_GET_KI
機能概要:年度を取得する
引数  :YYYYMMDD
戻り値 :年度
-------------------------------------*/

FUNCTION FN_GET_KI(P_YMD IN VARCHAR2)
RETURN VARCHAR2
AS
  -- 変数定義
  P_NENDO VARCHAR2(3);

BEGIN
  SELECT
  DECODE(
    TO_CHAR(TO_DATE(P_YMD,'YYYY/MM/DD'),'Q')
    ,'1',TO_CHAR(ADD_MONTHS(TO_DATE(P_YMD,'YYYY/MM/DD'),-12),'YYYY')
    ,SUBSTRB(P_YMD,1,4)
  )
  INTO P_NENDO
  FROM DUAL;

  RETURN P_NENDO;
EXCEPTION
  WHEN  OTHERS    THEN
    RETURN '**';
END FN_GET_KI;