oracle查询一天前、几天前、几小时前、一小时前的数据以及恢复误删的数据

 更新时间:2024年03月28日 11:23:17   作者:bpmh  
这几天工作经常需要查询某天之前的数据,整理了下相关的查询,下面这篇文章主要给大家介绍了关于oracle查询一天前、几天前、几小时前、一小时前的数据以及恢复误删的数据,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一.oracle查询一天前、几天前、几小时前、一小时前的数据

语法:

SELECT * FROM <table_name> AS OF TIMESTAMP (SYSDATE-<interval>);

例:

1.您想查询用户表(USER_INFO)一小时前的数据

--一小时是一天的1/24 ,故<interval>参数为1/24,如果想查四小时前的数据,<interval>参数可以是4/24或1/6
SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-1/24);

2.您想查询用户表(USER_INFO)一天前的数据

SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-1);

3…您想查询用户表(USER_INFO)三天前的数据

SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-3);

二.恢复误删的数据

恢复误删的数据基于前面能否查询到历史数据,假设能够查到一天前的数据,就可通过下面语句恢复被删除的数据 (如果您觉得步骤不直观的话请您直接看例子吧)

步骤:

1.创建临时表并把误删的数据暂时存到临时表中

CREATE TABLE TABNAME_TEMP AS SELECT * FROM TABNAME AS OF TIMESTAMP (SYSDATE-<interval>);

2.把临时表的数据插入原表(被您误删数据的表)中

 -- SELECT * FROM TABNAME_TEMP 语句 可以带where条件,看您需要插入所有数据还是选择性插入
 INSERT INTO TABNAME SELECT * FROM TABNAME_TEMP ;

3.删除临时表 (防止临时表占用数据库空间)

DROP TABLE TABNAME_TEMP;--注意这里删除的是临时表,您刚刚创建的表,别删错了。

例:恢复一天前误删除的用户(用户 “Tom”,“Jerry”)

CREATE TABLE USER_INFO_TEMP AS SELECT * FROM USER_INFO AS OF TIMESTAMP (SYSDATE-1);
INSERT INTO USER_INFO SELECT * FROM USER_INFO_TEMP where username in ('Tom','Jerry');
DROP TABLE USER_INFO_TEMP;

需要注意的是:误删的数据不一定能查询到,也不一定能找回,故在操作数据库时尽量小心操作

例:在更新数据库表时一定带上where条件;删除数据之前先备份数据(尤其是生产环境或测试环境您不熟悉的表)

附:Oracle 查询某个时间之内的数据

//一月之内
SELECT * FROM ESS.E_LOG WHERE E_LOG."ETime" BETWEEN sysdate-interval '7' month AND SYSDATE;
 
SELECT * FROM ESS.E_LOG
WHERE to_char(E_LOG."ETime",'yyyy-mm-dd hh24:mi:ss') between to_char(sysdate-225,'yyyy-mm-dd hh24:mi:ss') and to_char(sysdate,'yyyy-mm-dd hh24:mi:ss');
 
//一周之内
select * from ESS.E_LOG where E_LOG."ETime" > sysdate - interval '7' day;
 
 
//一年之内
select count(*) from ESS.E_LOG WHERE E_LOG."ETime" BETWEEN sysdate-interval '1' year AND SYSDATE;
 
//sysdate获取的时间是Oracle数据库系统时间
select sysdate from dual;

总结

到此这篇关于oracle查询一天前、几天前、几小时前、一小时前的数据以及恢复误删的数据的文章就介绍到这了,更多相关oracle查询某段时间之前的数据内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Oracle 9i 数据库异常关闭后的启动

    Oracle 9i 数据库异常关闭后的启动

    Oracle 9i 数据库异常关闭后的启动...
    2007-03-03
  • Oracle数据库中表空间的基本管理操作小结

    Oracle数据库中表空间的基本管理操作小结

    这篇文章主要介绍了Oracle数据库中表空间的基本管理方法小结,包括创建表空间和获取表空间大小等的操作命令,需要的朋友可以参考下
    2015-12-12
  • JDBC连接集群数据库的方法

    JDBC连接集群数据库的方法

    这篇文章主要介绍了JDBC连接集群数据库的方法,有需要的朋友可以参考一下
    2013-12-12
  • PLSQL一些常用知识点梳理总结

    PLSQL一些常用知识点梳理总结

    这篇文章主要为大家介绍了PLSQL一些常用的知识点梳理总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Oracle中查询表结构的6种方法总结

    Oracle中查询表结构的6种方法总结

    工作中查看oracle表结构经常会遇到,下面这篇文章主要给大家介绍了关于Oracle中查询表结构的6种方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Oracle 11g Dataguard参数详解

    Oracle 11g Dataguard参数详解

    这篇文章主要介绍了Oracle 11g Dataguard参数详解,包含了独立参数、主库参数、备库参数的详细说明,需要的朋友可以参考下
    2014-07-07
  • Oracle数据库优化策略总结篇

    Oracle数据库优化策略总结篇

    本文介绍了一些很实用但却不是很常见的Oracle数据库的优化策略,包括批量FETCH、SQL预解析等,需要的朋友可以参考下
    2015-08-08
  • Oracle如何查询表索引和索引字段

    Oracle如何查询表索引和索引字段

    这篇文章主要介绍了Oracle如何查询表索引和索引字段问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • oracle中exp,imp的使用详解

    oracle中exp,imp的使用详解

    这篇文章主要介绍了oracle中exp,imp的使用详解,需要的朋友可以参考下
    2015-07-07
  • oracle创建用户过程详解

    oracle创建用户过程详解

    这篇文章主要介绍了oracle创建用户过程详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论

?


http://www.vxiaotou.com