我只知道 一个日期,按 日 周 月 季度 年 分组查询,sql 怎么写 ?  先谢谢各位大虾。。

解决方案 »

  1.   

    SQL> select trunc(sysdate),trunc(sysdate)+1-1/24/60/60 from dual;--天
     
    TRUNC(SYSDATE) TRUNC(SYSDATE)+1-1/24/60/60
    -------------- ---------------------------
    2010-10-19     2010-10-19 23:59:59
     
    SQL> select trunc(sysdate,'D'),trunc(sysdate+7,'D')-1/24/60/60 from dual;--周
     
    TRUNC(SYSDATE,'D') TRUNC(SYSDATE+7,'D')-1/24/60/6
    ------------------ ------------------------------
    2010-10-17         2010-10-23 23:59:59
     
    SQL> select trunc(sysdate,'mm'),add_months(trunc(sysdate,'mm'),1)-1/24/60/60 from dual;--月
     
    TRUNC(SYSDATE,'MM') ADD_MONTHS(TRUNC(SYSDATE,'MM')
    ------------------- ------------------------------
    2010-10-1           2010-10-31 23:59:59
     
    SQL> select trunc(sysdate,'q'),add_months(trunc(sysdate,'q'),3)-1/24/60/60 from dual;--季度
     
    TRUNC(SYSDATE,'Q') ADD_MONTHS(TRUNC(SYSDATE,'Q'),
    ------------------ ------------------------------
    2010-10-1          2010-12-31 23:59:59
     
    SQL> select trunc(sysdate,'y'),add_months(trunc(sysdate,'y'),12)-1/24/60/60 from dual;--年
     
    TRUNC(SYSDATE,'Y') ADD_MONTHS(TRUNC(SYSDATE,'Y'),
    ------------------ ------------------------------
    2010-1-1           2010-12-31 23:59:59
     
    SQL> 
      

  2.   


    SELECT To_Char(SYSDATE,'yyyy-mm-dd') FROM dual; --当天
    SELECT To_Char(SYSDATE,'w') FROM dual;  --当月第几周 
    SELECT To_Char(SYSDATE,'ww') FROM dual; --当年第几周
    SELECT To_Char(SYSDATE,'mm') FROM dual;   --当月
    select to_char(sysdate,'q') from dual;  --当年第几个季度
    SELECT To_Char(SYSDATE,'yyyy') FROM dual;  --当年
      

  3.   

    to_char(sysdate,'w') --周 本月第几周
    to_char(sysdate,'mm') --月份
    to_char(sysdate,'yyyy') --年
    to_char(sysdate,'q')  --季度
      

  4.   

    指定的一天‘2010-10-10’将sysdate换成to_date('2010-10-10','YYYY-MM-DD')即可