我刚刚对你之前的问题发表了评论:
How to format only those records for which ORA-01843 is not thrown?
但你没有注意到。
创建一个函数,检查它是否是这样的有效日期。
CREATE OR REPLACE FUNCTION validmmddyyyy (p_str IN VARCHAR2)
RETURN NUMBER
AS
V_date DATE;
BEGIN
V_Date := TO_DATE (p_str, 'MM/DD/YYYY');
RETURN 1;
EXCEPTION
WHEN OTHERS
THEN
RETURN 0;
END;
然后,要选择失败的记录,可以运行查询
select MyColumn FROM MyTable where validmmddyyyy(MyColumn) = 0
当您有幸使用Oracle 12c R2时,您可以使用
DEFAULT..ON..CONVERSION ERROR
第条,共条
TO_DATE
SELECT *
FROM MyTable
WHERE TO_DATE (MyColumn default null on conversion error,'MM/DD/YYYY') IS NULL
一个重要的建议一如既往,不要使用
VARCHAR2 / CHAR
的类型
DATE
数据库中的。