给出了一个日期,例如(2013 年 5 月 11 日,即星期六)。我必须找到该日期之前的 7 个工作日(周一至周五)。那是 2013 年 5 月 3 日,即周五。我知道如何找出两个日期之间的工作日。通过:-
SELECT from_date- todate - ((
TRUNC (NEXT_DAY (from_date, 'SAT') - NEXT_DAY (todate - 1, 'SAT')) / 7) + (
TRUNC (NEXT_DAY (from_date, 'SUN') - NEXT_DAY (todate - 1, 'SUN')) / 7)) + 1
FROM dual;
但现在我只有一个给定的日期,必须找到这一天之前的第 7 天(根据工作日!)
最佳答案
将 sysdate
替换为您需要的任何日期。
02:35:58 SYSTEM@sandbox> ed
Wrote file S:\spool\sandbox\BUFFER_SYSTEM_36.sql
1 select sysdate - 7 seven_days_ago, min(sysdate - level) seven_bdays_ago
2 from dual
3 where rownum <= 7
4 and to_char(sysdate - level, 'DY') not in ('SAT', 'SUN')
5* connect by level <= 11
02:36:16 SYSTEM@sandbox> /
SEVEN_DAYS_AGO SEVEN_BDAYS_AGO
------------------- -------------------
04.05.2013 02:36:17 02.05.2013 02:36:17
Elapsed: 00:00:00.03
关于sql - Oracle SQL 中的日期之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16487813/