select * from table1 where to_char(datafield,'q')='52';

解决方案 »

  1.   

    select * from table1 where to_char(datefield,'ww')='52'
    这样子可以得到记录,但是这个结果和现实的不一样,
    查询52周是从2004/12/23开始的?但实际上52周是从2004/12/20号开始的
    郁闷,
      

  2.   

    select * from table1 where to_char(datefield,'IW')='52';
      

  3.   

    select to_char(sysdate,'ww') from dual;select * from table1 where to_char(datefield,'ww')='52'
      

  4.   

    IW 格式 返回的是根据ISO标准定义的一年中的周数
      

  5.   

    select to_char(sysdate,'iw') from dual;
    前面我写错了
      

  6.   

    select * from table1 where to_char(datafield,'iw')='52';
      

  7.   

    IW和WW的区别(8i上,别的版本不知道)WW 格式,计算周数时,第一周即为1月1日至7日,第二周为1月8日至1月14日,事实上就是日数/7
    IW 格式,计算周数时,第一周为1月1日至当年的第一个星期日,第二周为当年的第一个星期日的后一日开始计算
      

  8.   

    SQL> select to_char(to_date('2004-01-01','yyyy-mm-dd'),'WW') from dual;TO_CHAR(TO_DATE('2004-01-01','
    ------------------------------
    01SQL> select to_char(to_date('2004-01-01','yyyy-mm-dd'),'IW') from dual;TO_CHAR(TO_DATE('2004-01-01','
    ------------------------------
    01SQL> select to_char(to_date('2004-01-05','yyyy-mm-dd'),'WW') from dual;TO_CHAR(TO_DATE('2004-01-05','
    ------------------------------
    01SQL> select to_char(to_date('2004-01-05','yyyy-mm-dd'),'IW') from dual;TO_CHAR(TO_DATE('2004-01-05','
    ------------------------------
    02SQL> select to_char(to_date('2004-01-08','yyyy-mm-dd'),'WW') from dual;TO_CHAR(TO_DATE('2004-01-08','
    ------------------------------
    02SQL> select to_char(to_date('2004-01-08','yyyy-mm-dd'),'IW') from dual;TO_CHAR(TO_DATE('2004-01-08','
    ------------------------------
    02SQL>