小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
在我们使用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 (可自行调节)