我想验证所有格式的有效日期
我收到此错误。
我的输入是IDateFormat =' MM / YY / DD'和IStringDate =' 2001-01-01'
我收到以下错误。
ORA-01843:不是有效月份
ORA-06512:at" NECHO_APP.CONVERTTODATE" ORA-06512:第10行2011-01-01流程退出。
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;
答案 0 :(得分:1)
你应该使用这个
SELECT TO_CHAR(TO_DATE(TStringDate,'YYYY-MM-DD'),TDateFormat) INTO OConvertedDate FROM DUAL;
但是,您应该使用to_date和to_char。