to_date('2010/03/23','YYYY/MM/DD') - decode(sign(to_date('2010/03/19','YYYY/MM/DD')-indate),-1,indate,to_date('2010/03/19','YYYY/MM/DD')) tjts  

解决方案 »

  1.   

    --当indate比2010/03/09小的时候:
    上面语句等价于:
    to_date('2010/03/23','YYYY/MM/DD') - to_date('2010/03/19','YYYY/MM/DD')
    --当indate不小于2010/03/09时:
    to_date('2010/03/23','YYYY/MM/DD') - indate
      

  2.   

    to_date('2010/03/23','YYYY/MM/DD') - decode(sign(to_date('2010/03/19','YYYY/MM/DD')-indate),-1,indate,to_date('2010/03/19','YYYY/MM/DD')) tjts  
     
     1.sign表示取数字的符号
     2.decode(value,if 1,then 1,if2,then2,...,n)相当于 if else else
    如果 to_date('2010/03/19','YYYY/MM/DD')<indate 后面的值就是indate反之 则为
    to_date('2010/03/19','YYYY/MM/DD')
     3.代码的意思就是两个日期相减
     注意 oracle中 两个日期类型可以相减 但不能做加运算