比如表中有些时间数据是错误的,比如:start_date '20041159' 等等不确定。
我如何才能把它们删除?

解决方案 »

  1.   

    如果start_date为字符,则无许转换,如为date,则如下:
    select * from table 
    where (substr(to_char(start_date,'YYYYMMDD'),1,4) NOT BETWEEN '1900' AND '2004') OR
          (substr(to_char(start_date,'YYYYMMDD'),5,2) NOT BETWEEN '01' AND '12') OR
          (substr(to_char(start_date,'YYYYMMDD'),7,2) NOT BETWEEN '01' AND '31')如果能选出,然后再delete,该条件没有选出形如‘20041031’这样的错误,稍改下就可以
      

  2.   

    年份、月份好判断,日有点麻烦。oracle有判断莫个月最后一天的函数,加上它就能把类似20041031这样的错误给找出来了。