有时候在数据库中进行日期计算式会经常报日期格式不匹配,经查证大部分都是因为库中有垃圾数据
日期格式不对
1- 判断是否日期类型
用一下函数可以进行判断,把垃圾数据给删掉
CREATE OR REPLACE FUNCTION isdate (datestr VARCHAR2, format VARCHAR2)
RETURN INT
IS
p_date DATE;
BEGIN
SELECT TO_DATE (datestr, format)
INTO p_date
FROM DUAL;
RETURN 1;
EXCEPTION
WHEN OTHERS
THEN
RETURN 0;
END;
/
2- 判断是否number类型
CREATE OR REPLACE FUNCTION ISNUMBER( C VARCHAR2)
RETURN NUMBER
IS
N NUMBER;
BEGIN
BEGIN
N := TO_NUMBER(NVL(C,'a'));
EXCEPTION WHEN OTHERS THEN
RETURN 0;
END;
RETURN 1;
END;