首页 > 数据库 >Oracle将想要查询的时间点集合作为一个新表,去另一个表里只查询规定时间点的数据

Oracle将想要查询的时间点集合作为一个新表,去另一个表里只查询规定时间点的数据

时间:2023-04-18 09:11:07浏览次数:44  
标签:00 04 18 dd 查询 hh24 2023 Oracle 新表

最近遇到一个新需求,我们需要在一个表中选取特定时间段内一些固定时间点的数据(比如只想要取每个小时零点的数据),废物的我想不出来,让大佬教的,记录一下。

假如这个表长这样,名字就叫Table吧,需要取到每个小时零点的高度

 

TIME HEIGHT
2023-04-18 00:00:00 1
2023-04-18 01:00:00 2
2023-04-18 01:12:11 3
2023-04-18 01:43:00 4
2023-04-18 02:00:00 5

我们可以将我们想要查询的时间作为一个新表,然后联这个新表去查询当前数据库的时间,然后找出对应高度。

由开始时间和结束时间得到一个范围时间内的每小时的零点的新表,里面的字段取名叫做time_interval。

SELECT   

TRUNC(TO_DATE('2023-04-18 00:00:00', 'yyyy-mm-dd hh24:mi:ss'), 'hh24') + (LEVEL - 1) / 24 AS time_interval

FROM   DUAL   CONNECT   BY   LEVEL <= (TRUNC(TO_DATE('2023-04-18 03:00:00', 'yyyy-mm-dd hh24:mi:ss') , 'hh24') - TRUNC(TO_DATE('2023-04-18 00:00:00', 'yyyy-mm-dd hh24:mi:ss') , 'hh24')) * 24 + 1

然后用当前表联新表去一个一个查询里面的数据。

SELECT   T.HEIGHT , time_interval FROMTABLEt T  RIGHT JOIN (

SELECT   

TRUNC(TO_DATE('2023-04-18 00:00:00', 'yyyy-mm-dd hh24:mi:ss'), 'hh24') + (LEVEL - 1) / 24 AS time_interval

FROM   DUAL   CONNECT   BY   LEVEL <= (TRUNC(TO_DATE('2023-04-18 02:00:00', 'yyyy-mm-dd hh24:mi:ss') , 'hh24') - TRUNC(TO_DATE('2023-04-18 00:00:00', 'yyyy-mm-dd hh24:mi:ss') , 'hh24')) * 24 + 1

)  ON T.TIME = time_interval

这样我们就会得到一个高度与特定时间点的结果集辣!

 HEIGHT tme_interval 
 1  2023-04-18 00:00:00
 2  2023-04-18 01:00:00
 5  2023-04-18 02:00:00

标签:00,04,18,dd,查询,hh24,2023,Oracle,新表
From: https://www.cnblogs.com/pengzi-buaishangban/p/17328240.html

相关文章

  • Oracle Recovery Tools快速恢复断电引起的无法正常启动数据库---惜分飞
    由于异常断电,数据库启动报错ORA-01113和ORA-01110,ORA-00322和ORA-00312以及ORA-00314和ORA-00312错误MonApr1709:35:042023ALTERDATABASEOPENErrorsinfileD:\APP\ADMINISTRATOR\diag\rdbms\orcl\orcl\trace\orcl_ora_10192.trc:ORA-01113:文件1需要介质恢......
  • MyBatis查询功能
    如果查询出的数据只有一条,可以通过实体类对象接收List集合接收Map集合接收,结果如果查询出的数据有多条,一定不能用实体类对象接收,会抛异常TooManyResultsException,可以通过实体类类型的LIst集合接收Map类型的LIst集合接收在mapper接口的方法上添加@MapKey注解查询......
  • 实时Oracle 监控和性能分析工具
    概述 MyOra是一种先进的Oracle数据库监控工具,具有最快的响应时间并提供对Oracle数据库的即时可见性。该工具简单、快速且易于使用,无需安装,无需Oracle客户端,也无需互联网连接。下载MyOra并实时监控数据库性能。也可将MyOra用作DBA工具或SQL查询工具。   ......
  • Oracle:centos9 安装 oracle11g
    比较简单。关键点:ln-s/usr/lib64/libnsl.so.1   /usr/lib64/libnsl.soln-sf/u01/app/oracle/product/11.2.0/dbhome_1/lib/stubs/libaio.so.1  /usr/lib64/libaio.so.1vi/u01/app/oracle/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk (emdctl:添加-......
  • oracle如何同时往主外键表中插入值
    a(ID1,name,sex)b(ID2,ID1,Fraction)ID1,ID2同为自动增长ID1为b表的外键参照a表的ID11、先创建a和b表的序列CREATESEQUENCESEQ_A;CREATESEQUENCESEQ_B;2、插入A表并返回A表当前IDv_id1number(20);insertintoa(ID1,name,sex)values(SEQ_A.NEXTVAL,name_value......
  • 查询练习数据
    如题。xscj(学生成绩)数据库的三张表。xs(学生)表kc(课程)表xs_kc(选课)表建议:给选课表一个流水号。......
  • oracle登录
    oracle登录允许错误次数设置一般数据库默认是10次尝试失败后锁住用户1、查看FAILED_LOGIN_ATTEMPTS的值select*fromdba_profiles2、修改为30次alterprofiledefaultlimitFAILED_LOGIN_ATTEMPTS30;3、修改为无限次(为安全起见,不建议使用)alterprofi......
  • oracle open_cursor监控
    SELECTmax(a.value)ashighest_open_cur,p.valueasmax_open_curFROMv$sesstata,v$statnameb,v$parameterpWHEREa.statistic#=b.statistic#andb.name='openedcursorscurrent'andp.name='open_cursors'groupbyp.value;mos......
  • 科技政策查询系统优化 (排序与隐藏文字显示的)
    1.解决了排版乱,实现了按照时间的排序2.把操作按钮去除,实现了点击政策名称直接查看文件内容的方式(运用超链接的方式)3.实现了鼠标悬停在政策名称上面显示出所有信息的方式。 ......
  • CSS3 Media Query CSS3媒介查询
    通过min-width的设置,我们可以在浏览器窗口或设备屏幕宽度高于这个值的情况下,为页面指定一个特定的样式表;max-width则反之如下面代码:<style> /*max-width宽度小于600px*/ @mediascreenand(max-width:600px){ .one{background:#F9C;} span.lt600{display:inline......