满期保费 = ((统计截止日期 - 保险起期 + 1)/(保险止期 - 保险起期 + 1)) * 保费收入
可以直接用sql算出来吗?两个日期相减得到的是什么?可以直接参与运算吗?
请各位老大指点.

解决方案 »

  1.   

    两个日期相减得到的是天数
    select sysdate-to_date('20060701','yyyy-mm-dd') from dual
    结果是:31.3752546296296
    lz的可以写成
    满期保费 = (floor((统计截止日期 - 保险起期 + 1))/floor((保险止期 - 保险起期 + 1))) * 保费收入
      

  2.   

    我把(统计截止日期 - 保险起期 + 1)和(保险止期 - 保险起期 + 1)单独计算是可以的
    两个相除却出现OCI-22053: 溢出错误,有什么办法解决呢?
      

  3.   

    在sql*plus里面运行没有错误,在vs2005运行就发生OCI-22053: 溢出错误
      

  4.   

    try::::::::
    满期保费 = ((统计截止日期 - 保险起期 + 1)/decode((保险止期 - 保险起期 + 1),0,1,(保险止期 - 保险起期 + 1)) * 保费收入
      

  5.   

    可能是小数位太多了???
    你用floor试试
    满期保费 = (floor((统计截止日期 - 保险起期 + 1))/floor((保险止期 - 保险起期 + 1))) * 保费收入
      

  6.   

    你计算后的值取两位小数就ok了吧
    那你把你原来的结果用round()保留两位小数
      

  7.   

    number/0当然要溢出。
    可以用docode处理一下
    decode((保险止期 - 保险起期 + 1),0,'(溢出)', (floor((统计截止日期 - 保险起期 + 1))/floor((保险止期 - 保险起期 + 1))) * 保费)