0

私の日付形式は dd-mm-yyyy です。文字列の日付が 'dd-mm-yyyy' であることを確認したい文字列の日付があります。そうでない場合 (dd/mm/yyyy、10-OCT-2013 など)、その関数は 'NO' を返します

function checkMydateFormat(checkDate IN VARCHAR)VARCHAR{

IF(check date is 'dd-mm-yyyy')THEN
  RETURN 'YES';
ELSE
  RETURN 'NO';
END IF;

}

文字列の日付が正しい形式であることを確認する PL/SQL 関数を作成するにはどうすればよいですか?

4

4 に答える 4

2

このようなことを試してください

var par varchar2(20);
exec :par := '17-10-2013';
DECLARE
FUNCTION checkMydateFormat(checkDate IN VARCHAR2)
    RETURN VARCHAR2 IS RESULT VARCHAR2(10);
  BEGIN
    SELECT CASE
             WHEN regexp_like('7-10-2013', '\d{2}\-\d{2}\-\d{4}\', 'i') THEN
              'yes'
             ELSE
              'no'
           END into RESULT
      FROM dual;
    RETURN(RESULT);
  END checkMydateFormat;


BEGIN
  dbms_output.enable(NULL);
  dbms_output.put_line(checkMydateFormat(:par));

END;
于 2013-10-17T06:01:57.310 に答える
1

目的の形式を使用して文字列を日付に変換し、例外をキャッチすることができます。次のようなもの:

create function checkMydateFormat(checkDate IN VARCHAR2)
RETURN VARCHAR2
IS
  v_result VARCHAR2(3);
  v_date    DATE;
BEGIN 
  BEGIN 
    v_date  := to_date(checkDate,'fxdd-mm-yyyy');
    v_result := 'YES';
  EXCEPTION
  WHEN OTHERS THEN v_result := 'NO'; 
  END;
  RETURN v_result;
END;
/
于 2013-10-17T05:50:02.890 に答える