select  floor(sysdate  -  KSS_RFPERSON_USER.BIRTH_D)  days, KSS_RFPERSON_USER.* from KSS_RFPERSON_USER   where days between 18*365 and 25*365将sysdate和你的日期字段格式一致

解决方案 »

  1.   

    取出年份,与当前年份相减
    select to_char(sysdate,'yyyy') - '1978' from dual;
    就是年龄select * from tab
    where to_char(sysdate,'yyyy')-to_char(kss_pfpersono_user,'yyyy') between 12 and 25;
      

  2.   

    select * from  KSS_RFPERSON_USER   
    where 
    to_date(to_char(sysdate,'YYYY')-25||to_char(sysdate,'MMDD'),'YYYYMMDD')-birth_d<0
    and 
    to_date(to_char(sysdate,'YYYY')-18||to_char(sysdate,'MMDD'),'YYYYMMDD')-birth_d>0也就是说
    今天是2004-08-16,那么1979-08-15就不算是25岁了
    怎么发2次?到底要哪个嘛!
      

  3.   

    --更正一下楼上
    select * from tab
    where to_number(to_char(sysdate,'yyyy'))-to_number(to_char(kss_pfpersono_user,'yyyy')) between 18 and 25;
    --只能在年份上做比较.如果要求精确到月或天,那就要重写了.
      

  4.   

    别名不能做查询条件吧select * from 
    (select  floor(sysdate  -  KSS_RFPERSON_USER.BIRTH_D)  days, 
    KSS_RFPERSON_USER.* from KSS_RFPERSON_USER )
     b  where days between 18*365 and 25*365
      

  5.   

    select *     from  KSS_RFPERSON_USER   where  trunc(months_between(sysdate,BIRTH_D)/12)  between  18 and 25;
      

  6.   

    我的:select * from KSS_RFPERSON_USER 
    where (TO_NUMBER(TO_CHAR(sysdate,'YYYY'))-TO_NUMBER(TO_CHAR(BIRTH_D,'YYYY')) between 18 and 25;我们说年龄一般都是当前年减去出生年的,如果一定要算个365或366才算一岁的话,也可以比较当前日期与出生日期(除去年)的大小。看你实际需要,不赞成用 *365的形式,因为要考虑闰年