oracle库查询特定时间数据量

---场景描述

在Oracle数据库中entrydt字段是DATTETIME类的字段,根据不同业务场景约束entrydt的取值范围

1.返回值为‘2024-05-08 12:31:21’,需要查询近一年的数据量
SELECT EXTRACT(YEAR FROM entrydt) AS year, COUNT(*) AS record_count  

FROM o_TCR0081_V3  

WHERE entrydt BETWEEN ADD_MONTHS(TRUNC(SYSDATE), -12) AND TRUNC(SYSDATE)  

GROUP BY EXTRACT(YEAR FROM entrydt)  

ORDER BY year DESC;

-----在上面的sql中,EXTRACT函数来从日期中提取年份,并使用BETWEEN子句来指定日期范围,结果将返回过去一年(从当前日期算起)的按年分组的数据量。

2.如果只想返回近一年的数据(包括今天的数据)
SELECT COUNT(*) AS record_count  
FROM o_TCR0081_V3  
WHERE entrydt BETWEEN ADD_MONTHS(TRUNC(SYSDATE), -12) AND TRUNC(SYSDATE);

-----这个查询将返回o_TCR0081_V3表中在过去一年内(包括今天)的记录总数。

1. ADD_MONTHS(TRUNC(SYSDATE), -12)计算的是从当前日期开始的一年前的日期(时间部分被TRUNC函数截断),而TRUNC(SYSDATE)确保只比较日期部分,不包括时间。

2. TRUNC(SYSDATE)函数用于截断当前系统日期(SYSDATE)的时间部分,只保留日期部分。也就是说,如果你运行这个函数,它将返回当天的开始时间,通常是00:00:00。

3.如果今天是2024年1月1日,查询整个2023年的数据(即不包含今天的数据)
SELECT COUNT(*) AS record_count  

FROM o_TCR0081_V3  

WHERE entrydt BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -12) AND TRUNC(SYSDATE, 'YYYY') - INTERVAL '1' DAY;

4.查询最近一年每天的数据量
SELECT TRUNC(entrydt) AS day, COUNT(*) AS record_count  
FROM your_table_name  
WHERE entrydt >= ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), -12)  
GROUP BY TRUNC(entrydt)  
ORDER BY day;

5. 查询近一小时的数据

SELECT *  
FROM your_table_name  
WHERE   
    entrydate >= TRUNC(SYSDATE - INTERVAL '1' HOUR)  
    AND entrydate < TRUNC(SYSDATE)

6. 查询某一时间段数据

SELECT *  
FROM your_table  
WHERE entrydt >= TO_TIMESTAMP('2024-05-13 18:00:00', 'YYYY-MM-DD HH24:MI:SS')  
and entrydt < TO_TIMESTAMP('2024-05-13 20:00:00', 'YYYY-MM-DD HH24:MI:SS');


 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值