获取一周内的所有日期

时间:2017-01-28 03:35:55

标签: sql oracle oracle10g

当我从双重选择日期时。我必须显示特定周的所有日期和日期。

首先我使用

获取周数
select to_char(sysdate,'iw') FROM dual

通过使用周数,我想获得该特定周的所有日期。我用过这个。

SELECT (TRUNC ( TO_DATE (SUBSTR ('201704', 1, 4) 
         || '0131', 'YYYY'|| 'MMDD'), 'IYYY') +
              ( 7 * ( TO_NUMBER (SUBSTR ('201704', 5)) - 1)) ) AS iw
FROM   DUAL

我的输入是sysdate。

我必须得到o / p如下。

23-Jan-2017
24-Jan-2017
25-Jan-2017
26-Jan-2017
27-Jan-2017
28-Jan-2017
29-Jan-2017

1 个答案:

答案 0 :(得分:0)

试试这个:

select trunc(sysdate,'IW') + level - 1
from dual
connect by level <= 7;

如果您想手动提供日期而不是sysdate,您可以例如这样做:

select trunc(to_date('10-Feb-2017','dd-Mon-yyyy'),'IW') + level - 1
from dual
connect by level <= 7;

如果要在多个日期应用此功能,请使用交叉联接:

with t(dt) as (
  select to_date('23-Jan-2017','dd-Mon-yyyy') from dual union all
  select to_date('01-Mar-2017','dd-Mon-yyyy') from dual
)
-- test data ends here

select dt, trunc(dt,'IW') + n dt2
from t cross join (
      select level - 1 n
      from dual
      connect by level <= 7
);