SQL> with t as (select to_date('01/01/2007', 'dd/mm/yyyy') as update_date from dual union all 2 select to_date('01/01/2007', 'dd/mm/yyyy') from dual union all 3 select to_date('03/01/2007', 'dd/mm/yyyy') from dual union all 4 select to_date('03/01/2007', 'dd/mm/yyyy') from dual union all 5 select to_date('03/01/2007', 'dd/mm/yyyy') from dual union all 6 select to_date('04/01/2007', 'dd/mm/yyyy') from dual union all 7 select to_date('05/01/2007', 'dd/mm/yyyy') from dual union all 8 select to_date('07/01/2007', 'dd/mm/yyyy') from dual union all 9 select to_date('07/01/2007', 'dd/mm/yyyy') from dual) 10 -- end of test data 11 select to_char(x.UPDATE_DATE, 'YYYY-MM-DD') as update_date, DECODE(t.update_date, NULL, 0, count (*)) as count 12 from (select to_date('2007-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')+ (rownum-1) as update_date 13 from dual 14 connect by rownum <= (to_date('2007-02-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')- 15 to_date('2007-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'))) x 16 LEFT OUTER JOIN t ON (x.update_date = t.update_date) 17 where x.UPDATE_DATE >= to_date('2007-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 18 and x.UPDATE_DATE < color="navy">'2007-02-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 19 group by to_char(x.UPDATE_DATE, 'YYYY-MM-DD'), t.update_date 20 order by 1 21 / UPDATE_DAT COUNT ---------- ---------- 2007-01-01 2 2007-01-02 0 2007-01-03 3 2007-01-04 1 2007-01-05 1
Thursday, January 22, 2009
Select between dates in Oracle SQL
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment