-1
모든 형식의 유효 날짜를 확인하고 싶습니다.주어진 날짜 유효한 오라클
이 오류가 발생합니다.
내 입력 IDateFormat = 'MM/YY/DD'이며 IStringDate = '2001-01-01'
나는 아래의 오류를 얻고있다.
ORA-01843 : 유효한 월
ORA-06512 : 2011-01-01 프로세스가 종료 10 행에서 "NECHO_APP.CONVERTTODATE"ORA-06512에서.
CREATE OR REPLACE PROCEDURE convertToDate
(IDateFormat Varchar2,
IStringDate Varchar2,
OConvertedDate out timestamp,
OError OUT Int)
AS
TDateFormat Varchar2(20);
TStringDate Varchar2(20);
BEGIN
OError := 0;
TDateFormat := LTrim(RTrim(IDateFormat));
TStringDate := LTrim(RTrim(IStringDate));
DBMS_OUTPUT.PUT_LINE(TStringDate);
IF IS_VALID(TStringDate,'yyyy-mm-dd') = 1 THEN
SELECT TO_DATE(TStringDate,TDateFormat) INTO OConvertedDate FROM DUAL;
OError := 0;
END IF;
END;
- FUNCTION:
create or replace function is_valid(p_val in varchar2, fmt varchar2)
return number
is
not_a_valid_day exception;
not_a_valid_month exception;
pragma exception_init(not_a_valid_day, -1847);
pragma exception_init(not_a_valid_month, -1843);
l_date date;
begin
l_date := to_date(p_val, fmt);
return 1;
exception
when not_a_valid_day or not_a_valid_month
then return 0;
end is_valid;
to_date 함수의 입력 매개 변수와 함수 사이에 혼란이 있습니다. to_date의 몇 가지 예를 살펴 보시기 바랍니다. –
스택 오버 플로우에서 받아 들여진 솔루션을 생각해 냈습니다. http://stackoverflow.com/questions/14524448/pl-sql-check-date-is-valid – user3117500
is_valid 함수에는 아무런 문제가 없습니다. 나는 to_date 함수에 대해 이야기하고있다. TO_DATE 함수는 문자열을 날짜로 변환하는 데 사용됩니다. 한 형식에서 다른 형식으로 날짜를 변환하지 않습니다 –