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

2024-11-03 17:22:14
推荐回答(3个)
回答1:

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

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

 

直接全选复制粘贴运行

回答2:

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"

回答3:

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