ORACLEの日付チェック関数
NUMBER(8)の項目の中身が日付として正しいかわからない時に、エラーを起こさず日付型に一括変換したい。
ORACLEには日付チェック関数が存在しないので自作する必要があるらしい。
そこで
文字列が日付に変換できるかチェックする - オラクル・Oracle SQL 関数リファレンス
にあるソースをいじって簡単なファンクションを作った。
CREATE OR REPLACE FUNCTION IS_DATE( P_DATE IN NUMBER ) RETURN NUMBER AS vDate DATE; BEGIN vDate := TO_DATE(P_DATE, 'YYYYMMDD'); RETURN 1; EXCEPTION WHEN OTHERS THEN RETURN 0; END;
使い方はこんな感じ
select IS_DATE(20120601),IS_DATE(20121313) from DUAL
もちろんWhere句でも使える