数据库是字符串类型我写了这样的语句转换为时间可是里面有许多不符合月份的时间的,比如
里面有非法字符,月份还有200913271706 时间还有200707052507点,郁闷啊,语句相减用都用不来
语句select * from t_ch_pre where to_date(insert_time,'yyyy-mm-dd HH24:mi:ss')-to_date(in_time,'yyyy-mm-dd HH24:mi:ss')>1
大于1天
广大高手出个简单易行的方法,相减后统计出来超过1天的语句
里面有非法字符,月份还有200913271706 时间还有200707052507点,郁闷啊,语句相减用都用不来
语句select * from t_ch_pre where to_date(insert_time,'yyyy-mm-dd HH24:mi:ss')-to_date(in_time,'yyyy-mm-dd HH24:mi:ss')>1
大于1天
广大高手出个简单易行的方法,相减后统计出来超过1天的语句
CREATE OR REPLACE FUNCTION CHECK_DATE(p_date VARCHAR2) RETURN NUMBER
AS
v_date DATE;
BEGIN
SELECT to_date(p_date,'yyyymmddHH24miss')
INTO v_date
FROM dual;
RETURN 0;
EXCEPTION WHEN OTHERS THEN
RETURN -1;
END;
/SELECT insert_time
FROM t_ch_pre
WHERE check_date(insert_time)=-1;
找出返回不符合的insert_time,进行修改,然后再执行SELECT * FROM t_ch_pre
WHERE to_date(insert_time,'yyyymmddhh24miss')-to_date(in_time,'yyyymmddhh24miss')>1;如果不想修改insert_time和in_time,只计算符合条件的insert_time和in_time,则执行SELECT * FROM t_ch_pre
WHERE to_date(insert_time,'yyyymmddhh24miss')-to_date(in_time,'yyyymmddhh24miss')>1
and check_date(insert_time)=0 and check_date(in_time)=0;