有些人设计表时喜欢用文本来保存日期,因为缺少足够的验正,常常会有些错误的数据进去。这时只有写自定义函数来判断表中数据是否正确
CREATE OR REPLACE FUNCTION fun_isdate(p_str VARCHAR2, p_frm VARCHAR2)
RETURN NUMBER DETERMINISTIC IS
v_date DATE;
BEGIN
v_date := to_date(p_str, p_frm);
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
/
SELECT fun_isdate('2014-00-01', 'yyyy-mm-dd') AS d1,
fun_isdate('2014-01-01', 'yyyy-mm-dd') AS d2
FROM dual;
D1 D2
---------- ----------
0 1
1 row selected
SQL>