本帖最后由 yangboufo 于 2010-11-20 15:08:40 编辑

解决方案 »

  1.   

    用to_date()函数转 --一个月的
    select XXX from XXX
    when to_date(date,'yyyy-mm-dd') between to_date('20101101','yyyy-mm-dd')
          and to_date('20101130','yyyy-mm-dd')
      

  2.   

    一般来说,日期应该定义的日期型,并且日期作条件要建立索引,并且在日期列上不要使用函数。
    由于你已经定义为VARCHAR型,所以,都转换成字符来比较
    查今天的数据:select XXX from XXX where date >= to_char(sysdate,'yyyy-mm-dd') and date<to_char(sysdate+1,'yyyy-mm-dd');
    查昨天的数据:select XXX from XXX where date >= to_char(sysdate-1,'yyyy-mm-dd') and date<to_char(sysdate,'yyyy-mm-dd');
    查本月的数据:select XXX from XXX where date >=to_char(trunc(sysdate,'MM'),'yyyy-mm-dd') and
    date<to_char(last_day(sysdate)+1,'yyyy-mm-dd);
    查指定时间段数据:select XXX from XXX where date >='2010-10-01' and  date<'2010-11-10';