现在有一ORACLE中的SQL语句,需要移植到DB2中,请问该SQL改如何写
ORACLE中:select floor(months_between(date1,date2)) from A  
date1,date2分别为表中的两个字段 ,都为日期型 
DB2中如何使用写SQL,得出的结果与上述语句一致。请大侠们解答一下,谢谢

解决方案 »

  1.   

    select floor((DAYS(date2)-DAYS(date1))/30) from A;
      

  2.   

    select (year(date2)-year(date1))*12+month(date2)-month(date1) from A
      

  3.   


    没有考虑floor的影响,这个 有点问题的。
    如果前者日期的天数不等于后者天数,在ORACLE中 计算后结果会是小数,二经过floor处理后会在结果后再-1
    二再DB2里面 因为 year(date2)-year(date1))*12+month(date2)-month(date1)运算的始终为整数,结果会与ORACLE不同
      

  4.   

    谢谢回答,呵呵
    这个不行的,只是计算出了天数,而我需要的是 计算出两个日期之间的月份数。并且要和ORACLE中的结果保持一致
      

  5.   


    oralce 里面的month_between就是天数除以31后的小数,上面的30是不对的。
    select floor((DAYS(date2)-DAYS(date1))/31) from A;