sql="select e.*,p.name piername, b.name equipname from op_equipdamage e \n" +
                   "left outer join Data_pier p on e.pierid = p.id \n" +
                   "left outer join data_equip b on b.id=e.equiptypeid \n"+
                   "where damagetime>to_date('"+fd+"','yyyy-mm-dd') and damagetime<to_date('"+ld+"','yyyy-mm-dd') \n"+
                   "and r_dept_id="+deptid+" \n"+
                   "and ( (status in (1,2,3,7) and sysdate>r_adjust_limit_time ) or (status in(4,5,6,8,9) and repairtime>r_adjust_limit_time) )";
        }拿这个SQL语句为例, 我如果把r_adjust_limit_time 的值用java语句改了,而数据库里的值没改,这SQL该怎么改啊?会的请多多指教,我不会吝啬滴!谢谢!!

解决方案 »

  1.   

    什么叫“r_adjust_limit_time 的值用java语句改了,而数据库里的值没改”?
    有人明白不,楼下的请回答
      

  2.   

    我在数据库里有一个r_adjust_limit_time (最迟修复时间)的字段和repairtime(修复时间)本来是两个比较就行了,后来要求在java里面把r_adjust_limit_time 改大,然后再比较。r_adjust_limit_time 这个字段在数据库里的值是不变的。举个例子,就好比一个人是89年1月出生的,但身份证上又改成了88年5月,而89年就好比是数据库里的数据,身份证上怎么改它都是不变的。但算出的年龄不一样。
      

  3.   

    sql="select e.*,p.name piername, b.name equipname from op_equipdamage e \n" +
      "left outer join Data_pier p on e.pierid = p.id \n" +
      "left outer join data_equip b on b.id=e.equiptypeid \n"+
      "where damagetime>to_date('"+fd+"','yyyy-mm-dd') and damagetime<to_date('"+ld+"','yyyy-mm-dd') \n"+
      "and r_dept_id="+deptid+" \n"+
      "and ( (status in (1,2,3,7) and sysdate>(case when r_adjust_limit_time>'||java的值||' then r_adjust_limit_time else '||java的值||'  end;) )
       or (status in(4,5,6,8,9) and repairtime>(case when r_adjust_limit_time>'||java的值||' then r_adjust_limit_time else '||java的值||'  end;)) )";
      

  4.   

    谢谢你,不过还是不行,我用的是oracle数据库,r_adjust_limit_time的值改后是9:00——17:00或第二天的12:00