Oracle查詢今天的數據(昨天、本周...)


前言:獲取當前時間的方法:

select sysdate from dual;

1.今天的數據

select * from user where TO_CHAR(create_time,'yyyy-MM-dd') = TO_CHAR(sysdate,'yyyy-MM-dd');

2.昨天的數據

select * from user where TO_CHAR(create_time,'yyyy-MM-dd') = TO_CHAR(sysdate-1,'yyyy-MM-dd');

3.本周的數據

本周的數據就是從周一到周日的數據。

select * from user where create_time >= TRUNC(NEXT_DAY(sysdate-8,1)+1) and create_time< TRUNC(NEXT_DAY(sysdate-8,1)+7)+1;

說明:

1)NEXT_DAY()函數:獲取當前時間的下一周周日的時間。

select NEXT_DAY(sysdate, 1) from dual;

若當前時間是2021-06-09 14:20:20,那么其查詢的結果就是2021-06-13 14:20:20.

2)TRUNC()函數:對日期或數字進行截取,可指定截取的長度。這里只對日期的類型進行說明:

select TRUNC(sysdate) from dual;  --2021-06-09 00:00:00

這里是把當前的時間進行截取,默認只截取到日期,時間部分都是初始值0。

select TRUNC(sysdate,'yyyy') from dual;  --2021-01-01 00:00:00

這里是獲取到年份,月份和日期部分是初始值1,時間部分都是初始值0。

3)綜合分析

上述中 "NEXT_DAY(sysdate-8,1)" 是查詢上周日00:00:00的時間,

"TRUNC(NEXT_DAY(sysdate-8,1)+1)" 是查詢本周一00:00:00的時間,

"TRUNC(NEXT_DAY(sysdate-8,1)+7)+1" 是查詢下周一00:00:00的時間

4.上周的數據

select * from user where create_time >= TRUNC(NEXT_DAY(sysdate-8,1)-6) and create_time< TRUNC(NEXT_DAY(sysdate-8,1)+1);

5.本月的數據

select * from user where TO_CHAR(create_time,'yyyy-MM') = TO_CHAR(sysdate,'yyyy-MM');

6.上月的數據

1)ADD_MONTHS()函數:獲取當前時間前面或后面的月份的當前時間。

-- 上個月的現在時間
select ADD_MONTHS(SYSDATE,-1) from dual;  --2021-05-09 15:15:11
-- 下個月的現在時間
select ADD_MONTHS(SYSDATE,1) from dual;  --2021-07-09 15:15:11

2)查詢上個月的數據

select * from user where TO_CHAR(create_time,'yyyy-MM') = TO_CHAR(ADD_MONTHS(sysdate,-1),'yyyy-MM');

7.今年的數據

select * from user where TO_CHAR(create_time,'yyyy') = TO_CHAR(sysdate,'yyyy');

8.去年的數據

select * from sys_user where TO_CHAR(create_time,'yyyy') = TO_CHAR(ADD_MONTHS(trunc(sysdate,'YYYY'),-12),'yyyy');

說明如下:

1)TRNUC()用來獲取今年第一天的時間

select TRUNC(sysdate,'YYYY') from dual;  --2021-01-01 00:00:00

2)ADD_MONTHS()用來獲取去年第一天的時間

select ADD_MONTHS(trunc(sysdate,'YYYY'),-12) from dual;  --2020-01-01 00:00:00

 然后再把年份進行比較即可獲取去年的數據。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM