【历史最全】oracle 获取相应时间 (本周、上周、本月、上月、最近7、30、90天)

375 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在我们使用Oracle数据库的时候,经常会遇到获取相应时间的需求,更甚者,有些涉及写存储过程的兄弟们更是频繁使用到。

为了使用起来更加便利,特别留存此记录,便于之后查看。

以下SQL均可执行,因为访问的是dual表,所以不需要创建表就能完成调试,希望能帮助到大家。

路过可以点个赞哈!!!

时间段查询

获取本周整个时间段

SELECT TRUNC(SYSDATE,'iw') - 1 + ROWNUM FROM DUAL CONNECT BY ROWNUM <= 7

获取上周整个时间段

SELECT TRUNC(SYSDATE,'iw') - 8 + ROWNUM FROM DUAL CONNECT BY ROWNUM <= 7

获取本月整个时间段

SELECT TRUNC(SYSDATE, 'mm') - 1 + ROWNUM FROM DUAL CONNECT BY ROWNUM <= TO_CHAR(LAST_DAY(SYSDATE),'dd')

获取上月整个时间段

SELECT TRUNC(ADD_MONTHS(SYSDATE, -1), 'month') - 1 + ROWNUM FROM DUAL CONNECT BY ROWNUM <= TO_CHAR(LAST_DAY(TRUNC(ADD_MONTHS(SYSDATE, -1), 'month')),'dd')

获取最近7、30、90天的整个时间段

SELECT TRUNC(SYSDATE, 'dd') - ROWNUM AS day FROM DUAL CONNECT BY ROWNUM <= 7 (可自行设置)

时间点查询

获取本周一时间

SELECT TRUNC(SYSDATE, 'iw') FROM DUAL

获取本周末时间

SELECT TRUNC(SYSDATE, 'iw') + 6 FROM DUAL

获取上周一时间

SELECT TRUNC(SYSDATE, 'iw')  - 7 FROM DUAL

获取上周末时间

SELECT TRUNC(SYSDATE, 'iw')  - 1 FROM DUAL

获取本月的第一天

SELECT TRUNC(SYSDATE, 'mm') FROM DUAL

获取本月的最后一天

SELECT TRUNC(ADD_MONTHS(SYSDATE, -1), 'month') FROM DUAL

7、30、90天前时间

SELECT SYSDATE - 7 FROM DUAL (可自行调节)

SELECT SYSDATE - 30 FROM DUAL (可自行调节)

SELECT SYSDATE - 90 FROM DUAL (可自行调节)