表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
起始日期 截止日期 人员 部门
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
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 表名;这样就行了。
起始日期 截止日期 人员 部门
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'),
SELECT to_char(to_date('20101231','yyyymmdd'),'yyyy-mm') FROM dual;
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