我需要改写一个 sql 语句SELECT FROM NAME 
FROM PERSON 
WHERE MONTHS_BETWEEN(SYSDATE, TO_DATE(BIRTH_DT, 'YYYYMMDD')) <= 108 我的问题是这个BIRTH_DT的类型是VARCHAR2(8), 所以一旦出现了DATA有错误的情况,我的java code 就会抛出 SqlException 错误。我想做的是,如果 BIRTH_DT 可以转换为DATE, 就转,否则就把那个有错误的record 忽略掉。不知道
该怎样写。

解决方案 »

  1.   

    搂主为什么不直接用 date 数据类型。你这样的处理方法,当数据量很大的时候,效率很低的。因为你这个语句会把所有的记录进行处理,即使是不符合条件的记录。
      

  2.   

    一种做法是:
    select * from person
    然后在rs.next()中通过java.util.Calendar来过滤掉错误的DATA数据
      

  3.   

    www.source520.com     免费免注册80G源码书籍下载
      

  4.   

    database 已经 design 好了,所以只能是varcharTo gular(胡不归) 问题是在 calendar 处理之前,错误就已经跑出了
      

  5.   

    这个BIRTH_DT的类型是VARCHAR2(8)的话,在存入数据库时就有可能存入错误的日期