需求为---比如有一张表LOGS,其中有一列为CREATE_DATE(创建日期),类型为DATE类型。
怎么获得这张表中CREATE_DATE(创建日期)这一列早于现在系统时间(SYSDATE)  5天的数据呢?
用PLSQL实现,希望大神指教

解决方案 »

  1.   


    SQL> create table logs(id int , crdate date);表已创建。SQL>
    SQL> begin
      2      insert into logs(id,crdate) values(1,sysdate - 5);
      3      insert into logs(id,crdate) values(1,sysdate - 4);
      4      insert into logs(id,crdate) values(1,sysdate - 3);
      5      insert into logs(id,crdate) values(1,sysdate - 2);
      6      insert into logs(id,crdate) values(1,sysdate - 1);
      7      insert into logs(id,crdate) values(1,sysdate);
      8      insert into logs(id,crdate) values(1,sysdate + 1);
      9      insert into logs(id,crdate) values(1,sysdate + 2);
     10      insert into logs(id,crdate) values(1,sysdate + 3);
     11  end;
     12  /PL/SQL 过程已成功完成。SQL>
    SQL> select id,to_char(crdate,'yyyy-mm-dd hh24:mi:ss') crdate
      2  from logs ;        ID CRDATE
    ---------- --------------------------------------
             1 2015-06-02 08:25:38
             1 2015-06-03 08:25:38
             1 2015-06-04 08:25:38
             1 2015-06-05 08:25:38
             1 2015-06-06 08:25:38
             1 2015-06-07 08:25:38
             1 2015-06-08 08:25:38
             1 2015-06-09 08:25:38
             1 2015-06-10 08:25:38已选择9行。SQL>
    SQL> select id,to_char(crdate,'yyyy-mm-dd hh24:mi:ss') crdate
      2  from logs where crdate <= sysdate ;        ID CRDATE
    ---------- --------------------------------------
             1 2015-06-02 08:25:38
             1 2015-06-03 08:25:38
             1 2015-06-04 08:25:38
             1 2015-06-05 08:25:38
             1 2015-06-06 08:25:38
             1 2015-06-07 08:25:38已选择6行。SQL>
    SQL> drop table logs ;表已删除。SQL>
      

  2.   

    精确到秒就这样
    select * from logs where crdate <= sysdate-5 ;
    精确到天的话就to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') 
    select * from logs where crdate <= to_date(to_char(sysdate,'yyyymmdd'),'yyyymmdd') -5 ;
      

  3.   

     
    select id,to_char(crdate,'yyyy-mm-dd hh24:mi:ss') crdate
     from logs 
    where crdate>= to_date(to_char(sysdate - 4,'yyyy-mm-dd'),'yyyy-mm-dd hh24:mi:ss')   
    and crdate < sysdate ;