如上图,oracle怎么写函数,校验出ID为 1的日期格式是错误的,ID为2的日期格式是正确的?下述在网上找的函数无法满足当前的需求
可以试下这个
CREATE OR REPLACE FUNCTION check_date_format(p_date_string IN VARCHAR2) RETURN VARCHAR2 IS
v_result VARCHAR2(10);
BEGIN
-- 使用 TRY..EXCEPTION 结构进行日期格式验证
BEGIN
SELECT TO_DATE(p_date_string, 'YYYY-MM-DD HH24:MI:SS') INTO dummy FROM DUAL;
-- 如果没有抛出异常,则日期格式正确
v_result := '正确';
EXCEPTION
WHEN OTHERS THEN
-- 发生异常,日期格式不正确
v_result := '错误';
END;
RETURN v_result;
END;
/
这样试试,先正则大致判断下格式,然后再转时间,如果异常那就是有问题返回0
CREATE OR REPLACE FUNCTION validate_time(time_string VARCHAR2) RETURN NUMBER IS
valid_format BOOLEAN;
valid_time TIMESTAMP;
BEGIN
valid_format := REGEXP_LIKE(time_string, '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$');
IF valid_format THEN
BEGIN
valid_time := TO_TIMESTAMP(time_string, 'YYYY-MM-DD HH24:MI:SS');
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
ELSE
RETURN 0;
END IF;
END;
是数据库还是其他的