表table
起始日期 截止日期 人员 部门
2010-01-01 2010-04-30 A DEPTA
2010-05-01 2010-12-31 A DEPTB
2010-01-01 2010-06-30 B DEPTA
2010-07-01 2010-12-31 B DEPTB怎么实现得出查询结果
月份 人员 部门
2010-01 A DEPTA
2010-02 A DEPTA
2010-03 A DEPTA
2010-04 A DEPTA
2010-05 A DEPTB

解决方案 »

  1.   

    在查询的时候,你得对这个时间进行格式化一下  
    to_date('1970-1-1','yyyy-mm-dd')改成 to_date('1970-1-1','yyyy-mm')把时间格式的字段名传到第一个值的位置就行了。另外,在不修改表内容的前提下可以这样:
    sql> alter session set nls_date_format = 'yyyy-mm';
    sql> select * from 表名;这样就行了。
      

  2.   

    表table
    起始日期 截止日期 人员 部门
    2010-01-01 2010-04-30 A DEPTA
    2010-05-01 2010-12-31 A DEPTB
    2010-01-01 2010-06-30 B DEPTA
    2010-07-01 2010-12-31 B DEPTBselect to_date(to_char(起始日期,''yyyymm),'yyyy-mm'),人员,部门 from biao order by to_date(to_char(起始日期,''yyyymm),'yyyy-mm'),
      

  3.   

    select to_date(to_char(起始日期,''yyyymm),'yyyy-mm'),人员,部门 from biao order by to_date(to_char(起始日期,''yyyymm),'yyyy-mm'),
      

  4.   

    SELECT to_char(SYSDATE,'yyyy-mm') FROM dual;其中sysdatea是DATE类型的。
    SELECT to_char(to_date('20101231','yyyymmdd'),'yyyy-mm') FROM dual;
      

  5.   


    create table t(kssj date,jssj date,ry varchar2(50),bm varchar2(50));
    insert into t values (to_date('2010-01-01','yyyy-mm-dd'),to_date('2010-04-30','yyyy-mm-dd'),'A','DEPTA');SELECT to_char(add_months(kssj,rn-1),'yyyy-mm') m,ry,bm
      FROM T,
           (SELECT ROWNUM rn
              FROM (SELECT Months_between(JSSJ, KSSJ) mb from t)
            connect by rownum < mb) t1
     where t.jssj > add_months(t.kssj, t1.rn-1) order by ry,bm,m1 2010-01 A DEPTA
    2 2010-02 A DEPTA
    3 2010-03 A DEPTA
    4 2010-04 A DEPTA