RT,
我现在需要一个过滤条件   
就是
select sum(amt) from rb_acct where (mydate = 0 or to_date(maydate,'yyyymmdd')-sysdate < 30);
即我需要mydate满足减去系统时间要小于30,但是mydate=0又是有业务含义的,所以不能去掉,但是执行to_date又会报错,于是我就把他们写成or的形式,希望能够=0的时候跳过to_date,不等于0的时候执行to_date,但是执行的时候总会报错于是我把
where (mydate = 0 or to_date(maydate,'yyyymmdd')-sysdate < 30)
换成
where (to_date(maydate,'yyyymmdd')-sysdate < 30  or  mydate = 0)
也报同一个错误,经验证是由于mydate=0参与了to_date的运算,好像这个or的顺序挺混乱的,一下从左边开始执行,一下从右边开始执行,那么我怎么才能达到需求的目的并且不报错呢?