日付文字列(YYYYMMDD)から年、月、日のみを取得するFunctionサンプルです。
サンプル
例)日付文字列(YYYYMMDD)から年、月、日のみを取得する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
CREATE OR REPLACE FUNCTION FNC_GET_Y_M_D( ymd IN VARCHAR2 ,str IN VARCHAR2 ) RETURN NUMBER IS dt DATE; ret NUMBER; BEGIN dt := TO_DATE(ymd, 'YYYYMMDD'); IF str = 'YEAR' THEN ret := EXTRACT(YEAR FROM dt); ELSIF str = 'MONTH' THEN ret := EXTRACT(MONTH FROM dt); ELSIF str = 'DAY' THEN ret := EXTRACT(DAY FROM dt); END IF; RETURN ret; EXCEPTION WHEN OTHERS THEN RETURN NULL; END; / |
- 実行例
- SQL>select FNC_GET_Y_M_D('20180201', 'MONTH') from dual; FNC_GET_Y_M_D('20180201') ----------------------------------------- 2
解説
- 第1引数に日付文字列(YYYYMMDD)、第2引数に年、月、日の指定('YEAR' or 'MONTH' or 'DAY')を指定します。
- YYYYMMDD形式の日付文字列でない場合はNULLが返ります。
- 戻り値は数値型で返ります。