引数に渡された値が正しい日付文字列かどうかを判定する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 F_CHECK_YYYYMMDD( a IN VARCHAR2 ) RETURN NUMBER IS dt DATE; ret NUMBER; BEGIN IF a IS NULL THEN ret := 0; ELSE --文字列を日付型に変換してみる dt := TO_DATE(a, 'YYYYMMDD'); --変換できた場合は1を返す ret := 1; END IF; RETURN ret; EXCEPTION WHEN OTHERS THEN --変換エラーの場合は0を返す RETURN 0; END; / |
使用例
例)「20170331」をチェックする
- SQL*Plus
- SQL> SELECT F_CHECK_YYYYMMDD('20170331') FROM dual; F_CHECK_YYYYMMDD('20170331') ------------------------------- 1
例)「20170231」をチェックする
- SQL*Plus
- SQL> SELECT F_CHECK_YYYYMMDD('20170231') FROM dual; F_CHECK_YYYYMMDD('20170231') ------------------------------- 0
補足
- 正しい日付文字列の場合は1、不正な場合は0を返します。
- NULLの場合は0を返します。
- 日付形式を変えたい場合は、13行目のフォーマット形式を変更してください。