oracle怎样写函数校验日期格式是否正确?

img

如上图,oracle怎么写函数,校验出ID为 1的日期格式是错误的,ID为2的日期格式是正确的?下述在网上找的函数无法满足当前的需求

img

可以试下这个


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;

是数据库还是其他的