RT,银行做报表,比如传入的参数是20051则是表示要查询2005年第一季度的所有日期,按照20050101,20050102,...一直到20050331,请问我该怎么获取这样的数据呢?月份也是,比如传入的是200603,我就要拿出所有的20060301到20060331之间的所有日期,怎么做呢?

解决方案 »

  1.   


    --20051
    select * from tab where to_char(dt,'q')=substr('20051',5,1) --200603
    select * from tab where SubStr(dt,'yyyymm')='200603'
      

  2.   


    --20051
    select * from tab where to_char(dt,'q')=substr('20051',5,1) and to_char(dt,'yyyy')=substr('20051',1,4)--200603
    select * from tab where to_char(dt,'yyyymm')='200603'
      

  3.   


    谢谢,请问tab是什么表呢,dt又是什么数据呢?
      

  4.   

    select want_date from table  where to_char(table.date,'yyyymm') order by want_date
      

  5.   

    对了,也许是我没有说明清楚,没有tab这样的日期对照表,这是一个存储过程,20032只是传入的一个参数,表示2003年第二季度,200312表示2003年12月,我现在需要按照他传入的参数,把这个区间范围内的日期拿出来,进行计算,(没有这样的日期对照表呢),所以上面的 from tab和dt真不知道是什么
      

  6.   

    tab换成你的表名,dt换成你表中对应的时间字段。
     
      

  7.   

    where date between to_char(,'dd')>'1'; and to_char(,'dd')<'31';