oracle数据库中怎么查询当前年每月的天数,按自然月统计,谢谢!

如题所述

楼上的只统计了一个月的吧

WITH t AS
     (SELECT     ROWNUM
            FROM DUAL
      CONNECT BY ROWNUM <= 12)
SELECT    TO_CHAR (LAST_DAY (TO_DATE (   TO_CHAR (SYSDATE, 'YYYY')
                                      || LPAD (TO_CHAR (ROWNUM), 2, 0),
                                      'YYYYMM'
                                     )
                            ),
                   'YYYY-MM'
                  )
       || '月',
          TO_CHAR (LAST_DAY (TO_DATE (   TO_CHAR (SYSDATE, 'YYYY')
                                      || LPAD (TO_CHAR (ROWNUM), 2, 0),
                                      'YYYYMM'
                                     )
                            ),
                   'DD'
                  )
       || '天'
  FROM t

 

直接全选复制粘贴运行

追问

我想选定某月就出来某月的天数,要怎么弄呢

追答

select add_months(to_date('201202', 'YYYYMM'),1)-to_date('201202', 'YYYYMM') from dual

你把月份改一下就OK

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-26
oracle 实现按周,月,季度,年查询统计数据

//按自然周统计
select to_char(date,'iw'),sum()
from
where
group by to_char(date,'iw')

//按自然月统计
select to_char(date,'mm'),sum()
from
where
group by to_char(date,'mm')

//按季统计
select to_char(date,'q'),sum()
from
where
group by to_char(date,'q')

//按年统计
select to_char(date,'yyyy'),sum()
from
where
group by to_char(date,'yyyy')

统计的时候注意:以上我写的统计知识统计当年的,要是跨年在存在逻辑上问题,需要根据需要格式化“统计时间”。可以根据需要参考下面的to_char函数

附:TO_CHAR函数说明

TO_CHAR(x[[,c2],C3])
【功能】将*期或数据转换为char数据类型
【参数】
x是一个date或number数据类型。
c2为格式参数
c3为NLS设置参数
如果x为*期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和*份所使用的语言。
如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"
第2个回答  推荐于2016-11-15
select
to_char(add_months(trunc(sysdate,'yyyy'),level-1),'yyyymm') year_month,
last_day(add_months(trunc(sysdate,'yyyy'),level-1))-add_months(trunc(sysdate,'yyyy'),level-1)+1 days
from
dual
connect by level<=12