转正统计:入职日期两个月后自动统计,且HR部门有权限修改转正日期(因个别人会提前或延期转正(需求)
select * from  hrm_emp_basicinfo  where   datediff(month,a.emp_accession_date,getdate())>=2 and  datediff(day,getdate(),a.emp_formal_date)>0";(我的查询语句)emp_accession_date 入职日期emp_formal_date  转正日期为什么数据不能全部查出来,如果我的入职日期是3月份,数据都查不到.

解决方案 »

  1.   

    好好检查datediff(month,a.emp_accession_date,getdate())
      

  2.   

    为什么跑到ORCLE来了? 其次应该再加一。
      

  3.   

    晕,为什么不能来呀,这本来就是sql的问题,没有人帮我解决一下吗?
      

  4.   

    SQL> select * from t_where;        ID SELECT_ORDER SIGN                 ERR_TYPE             SELECT_WHERE
    ---------- ------------ -------------------- -------------------- --------------------------------------------------------------------------------
           100            1 ORA                  警告                 MESSAGE LIKE '****'
           200            2 ORA                  错误                 CODE = 600
           300            3 ORA                  警告                 CODE = 1555
           400            4 ORA                  情报                 MESSAGE LIKE '%******%'
           500            5 ORA                  错误                 MESSAGE LIKE '%err%'SQL> select * from t_oracle;       SEQ MACHINE_ID           CODE                 MESSAGE              FLAG
    ---------- -------------------- -------------------- -------------------- ----------
            11 1000                 600                  err1                 未処理
            12 1000                 1555                                      未処理
            13 2000                 600                  err2                 未処理
            14 2000                 1                                         処理完
            15 2000                 12153                                     未処理SQL> 
    SQL> declare
      2      cursor get_where is
      3      select * from t_where ;
      4      row_where t_where%rowtype;
      5      sql_str    varchar2(2000);
      6      row_oracle t_oracle%rowtype;
      7  begin
      8      open get_where;
      9     loop
     10        fetch get_where into row_where;
     11        exit when get_where%notfound;
     12        sql_str:='declare
     13        begin
     14        for rc in ( select * from t_oracle where '||' '||row_where.select_where||' ) loop
     15              insert into result_tab values
     16  
     17  (rc.seq,rc.machine_id,'||''''||row_where.sign||''''||','||row_where.id||','||''''||row_where.err_type||''''||','||row_where.select_order||' );
     18        end loop;
     19        end ;';
     20        --dbms_output.put_line(sql_str);
     21     execute immediate sql_str;
     22     end loop;
     23     close get_where;
     24  end;
     25  /PL/SQL procedure successfully completedSQL> select * from result_tab;       SEQ MACHINE_ID           SIGN                         ID ERR_TYPE             SELECT_ORDER
    ---------- -------------------- -------------------- ---------- -------------------- ------------
            13 2000                 ORA                         200 错误                            2
            12 1000                 ORA                         300 警告                            3
            11 1000                 ORA                         500 错误                            5
            13 2000                 ORA                         500 错误                            5
            11 1000                 ORA                         200 错误                            2
      

  5.   

    楼上的说对了,要么自己拆分字段比较,要么是月的话用ADD_MONTHS后比较
      

  6.   

    sql server 2000的问题在这里来问.我晕.