select to_number((to_char(a.ghrq,'yyyymmdd')-to_char(b.csrq,'yyyymmdd')),'0000000')
 from gh_ghk a,gy_brjbxxk b where a.jzkh=b.jzkh and a.jzkh=100

解决方案 »

  1.   

    楼主的sql会报错吧。
    这个语句就是把两个时间变成数字相减,得到的结果没多大意义。
    如果求相差天数,时间类型直接减就行了
      

  2.   

    SQL> select '20050913' - '20050812' from dual;'20050913'-'20050812'
    ---------------------
                      101SQL> select '20050913' - '20050814' from dual;'20050913'-'20050814'
    ---------------------
                       99就是以两个日期的年月日组成一个8位整数,然后求它们的差值。
      

  3.   

    select to_number((to_char(a.ghrq,'yyyymmdd')-to_char(b.csrq,'yyyymmdd')),'0000000')
     from gh_ghk a,gy_brjbxxk b where a.jzkh=b.jzkh and a.jzkh=100
    去掉返回字符串前面值為0 比如 0001223 得到結果 為 1223
      

  4.   

    不過在oracle數據庫中VARCHAR類型轉number類型前面的0會自動去掉,不知加函數轉換是為了保險還是其它含義