比方说 某表3个字段 
ID,value,date 
value里随机存放26个字母的其中一个 date随便的完整日期 
统计日·周·月·季·年的有A字母多少 B字母多少等等 
周和季  怎么算?  

解决方案 »

  1.   


    select to_char(datefield, 'yyyy-mm-dd'), letter, count(letter) from table group by to_char(datefield, 'yyyy-mm-dd'), letter月
    select to_char(datefield, 'yyyy-mm'), letter, count(letter) from table group by to_char(datefield, 'yyyy-mm'), letter年
    select to_char(datefield, 'yyyy'), letter, count(letter) from table group by to_char(datefield, 'yyyy'), letter有关to_char的时间,如下
    select to_char(sysdate,'yyyy') from dual; --年 
    select to_char(sysdate,'mm') from dual; --月 
    select to_char(sysdate,'dd') from dual; --日 
    select to_char(sysdate,'Q' from dual; --季 
    hh 小时(12) 
    hh24 小时(24) 
    Mi 分 
    ss 秒 
    D 周中的星期几 
    ddd 年中的第几天 
    WW 年中的第几个星期 
    W 该月中第几个星期
      

  2.   

    TO_CHAR(SYSDATE,'Q')   第几季度 
    具体查看:
    http://blog.csdn.net/suncrafted/archive/2009/06/16/4273528.aspx
      

  3.   

    TO_CHAR(SYSDATE,'DAY')   星期几 
    TO_CHAR(SYSDATE,'D')  老外的星期几 
      

  4.   

    to_char(sysdate,'IW') 自然周,需要注意的就是年底和下一年1.1号,如果1.1是周四之前,那1号就是当年第一周,如果是周四以后,则下一周才是第一周
      

  5.   

    日 SQL> select to_char(trunc(sysdate),'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(TRUNC(SYSDA
    -------------------
    2009-07-06 00:00:00SQL>周SQL> select to_char(trunc(sysdate,'IW'),'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(TRUNC(SYSDA
    -------------------
    2009-07-06 00:00:00SQL>月
    SQL> select to_char(trunc(sysdate,'MM'),'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(TRUNC(SYSDA
    -------------------
    2009-07-01 00:00:00SQL>
    季,你用月除四就行了,
    年就不用说了吧。