如何获得指定表中一列代表的时间早于系统当前日期五天的数据 需求为---比如有一张表LOGS,其中有一列为CREATE_DATE(创建日期),类型为DATE类型。怎么获得这张表中CREATE_DATE(创建日期)这一列早于现在系统时间(SYSDATE) 5天的数据呢?用PLSQL实现,希望大神指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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> 精确到秒就这样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 ; 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 ; oracle统计查询问题 关于hibernate oracle大表联合查询,速度超级慢 小白问题 希望有人来回答 oracle 中能不能判断这个字段中是数字还是字符 SQL 语句求解~~~~~~~~在线等.........等等等!!!!!!!1 如何单独导出Oracle的所有用户和权限? 更新不同主机上的ORACLE 数据库中的两张表,怎样保证在一个事务中 C++用Ado连接Oracle的问题 关于定义表类型 什么会导致ora04031错误 oracle 问题,求大神进
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>
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 ;
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 ;