表ta有四个字段
date1       date2            date3            money1
2002-11-11  2000-11-19       1998-08-08       2900
2001-11-10                   1999-11-11       1000
null        2000-09-09       1998-08-12       400....如果date1的内容为空,就取date2的值,否则取date1的值,用来比较和date3相差多少年还有一个问题用trunc((months_between(trunc(date1,'mmm'),trunc(date3,'mm')))/12计算相差多少年时
出现错误ora-01722:无效数字,不知道什么原因

解决方案 »

  1.   

    1. select trunc(months_between(nvl(date1, date2), date3) / 12) from t2. 因为你的date1中有null值
      

  2.   

    我已经在where中加了条件 date1 is not null
      

  3.   

    计算相差多少年是这样的:trunc(months_between(sysdate, hiredate) / 12)
      

  4.   

    trunc((months_between(trunc(date1,'mmm'),trunc(date3,'mm')))/12还差个括号
      

  5.   

    1. select trunc(months_between(nvl(date1, date2), date3) / 12) from t 2. 因为你的date1中有null值
    分析得很对
      

  6.   

    那你就去date1的值,为什么还要去date2??
    看LZ给的数据格式,我感觉还是case when 搞定好!select trunc(months_between(case when date1 is null or date1='null' then date2 else date1 end date, date3) / 12  from tablenvl 不能处理字符null