暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 查询每隔星期三返回一次

ASKTOM 2021-02-18
633

问题描述

我正在使用下面的查询返回2021日历年的每个星期三的日期。

如何调整此查询以每隔一个星期三而不是每个星期三返回?

select  distinct next_day(to_date('01-01-2021','mm-dd-yyyy')-1+level,'Wednesday') All_WEDS
from dual 
connect by level <= floor(to_date('12-31-2021','mm-dd-yyyy') - to_date('01-01-2021','mm-dd-yyyy'))
order by All_WEDS;

专家解答

没有必要每天取货,然后取不同的值。你只需要周数和每隔一周连续一个星期三。

通过以下方式查找此信息:

* 计算一年中的第一个星期三到最后一天之间的天数
* 将其除以14
* 拿这个的天花板

然后,每隔一个星期三就可以找到一年中的第一个,并为每一行增加14天:

alter session set nls_date_format = ' DD Mon YYYY ';
select  next_day ( 
          to_date ( '01-01-2021','mm-dd-yyyy') - 1, 'Wednesday'
        ) + ( 
          ( level - 1 ) * 14 
        ) all_weds
from    dual 
connect by level <= ceil ( ( 
    add_months (
      to_date ( '01-01-2021','mm-dd-yyyy'), 12
    ) - next_day ( 
      to_date ( '01-01-2021','mm-dd-yyyy') - 1, 'Wednesday'
    ) 
  ) / 7 / 2
) 
order by all_weds;

ALL_WEDS        
 06 Jan 2021     
 20 Jan 2021     
 03 Feb 2021     
 17 Feb 2021     
 03 Mar 2021     
 17 Mar 2021     
 31 Mar 2021     
 14 Apr 2021     
 28 Apr 2021     
 12 May 2021     
 26 May 2021     
 09 Jun 2021     
 23 Jun 2021     
 07 Jul 2021     
 21 Jul 2021     
 04 Aug 2021     
 18 Aug 2021     
 01 Sep 2021     
 15 Sep 2021     
 29 Sep 2021     
 13 Oct 2021     
 27 Oct 2021     
 10 Nov 2021     
 24 Nov 2021     
 08 Dec 2021     
 22 Dec 2021

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论