これは悪い考えです。 のみ 日付が正しいことを検証する方法は、日付を日付に変換することです。変換が失敗した場合、それは日付ではありません。成功した場合は、可能性があります なれ。日付は、正規言語では解析するには複雑すぎます。
したがって、それを日付に変換する関数を作成します。ここにあるよりもはるかに一般的なものにすることができるので、他の目的に再利用できます:
create or replace function validate_date (
PDate in varchar2
, PDateFormat in varchar2
) return date is
begin
return to_date(PDate, PDateFormat);
exception when others then
return null;
end;
これは、日付と日付の形式が一致することを検証できる場合は日付を返し、それ以外の場合はエラーがある場合はNULLを返します。クエリは次のようになります:
select 'P' from dual where validate_date('20140506', 'yyyymmdd') is not null