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

 更新时间:2024年03月28日 11:23:17   作者:bpmh  
这几天工作经常需要查询某天之前的数据,整理了下相关的查询,下面这篇文章主要给大家介绍了关于oracle查询一天前、几天前、几小时前、一小时前的数据以及恢复误删的数据,需要的朋友可以参考下

一.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导入导出某个schema数据的步骤

    oracle导入导出某个schema数据的步骤

    这篇文章主要介绍了oracle导入导出某个schema数据的步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • oracle(plsql)生成流水号

    oracle(plsql)生成流水号

    这篇文章主要介绍了oracle(plsql)生成流水号,需要的朋友可以参考下
    2014-03-03
  • oracle 9i使用闪回查询恢复数据库误删问题

    oracle 9i使用闪回查询恢复数据库误删问题

    本篇文章给大家介绍在oracle 9i中使用闪回查询恢复数据库误删问题,涉及到数据库增删改查的基本操作,对oracle数据库闪回查询感兴趣的朋友可以一起学习下本篇文章
    2015-10-10
  • Oracle学习笔记之视图及索引的使用

    Oracle学习笔记之视图及索引的使用

    这篇文章主要介绍了Oracle学习笔记之视图及索引的使用,视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询
    2022-07-07
  • sql in查询元素超过1000条的解决方案

    sql in查询元素超过1000条的解决方案

    在oracle数据库中sql使用in时,如果in的能数超过1000就会出问题,下面这篇文章主要给大家介绍了关于sql in查询元素超过1000条的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • Oracle ASM数据库故障数据恢复解决方案

    Oracle ASM数据库故障数据恢复解决方案

    这篇文章主要介绍了Oracle ASM数据库故障数据恢复解决方案,需要的朋友可以参考下
    2017-04-04
  • Oracle存储过程语法代码示例详解

    Oracle存储过程语法代码示例详解

    本文讲解Oracle存储过程语法,包括总体结构、存储过程声明、参数定义、变量声明、游标声明、行数据类型声明、变量赋值、条件判断、WHILE循环、FOR循环、游标使用、异常捕捉、异常处理、存储过程调用、存储过程代码示例调用代码示例、调用结果展示,感兴趣的朋友一起看看吧
    2025-04-04
  • Oracle中pivot函数图文实例详解

    Oracle中pivot函数图文实例详解

    pivot操作是一种数据处理方法,可以将一个表中的行数据转换为列数据,这种转换对于表格数据的分析和展示非常有用,下面这篇文章主要给大家介绍了关于Oracle中pivot函数的相关资料,需要的朋友可以参考下
    2023-05-05
  • Oracle中null值和空字符串的坑及解决

    Oracle中null值和空字符串的坑及解决

    这篇文章主要介绍了Oracle中null值和空字符串的坑及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • PowerDesigner15.1连接oracle11g逆向生成ER图

    PowerDesigner15.1连接oracle11g逆向生成ER图

    这篇文章主要为大家详细介绍了PowerDesigner15.1连接oracle11g逆向生成ER图的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论