gpt4 book ai didi

sql - 如何根据公历计算Oracle SQL中一个期间的第一个日期和最后一个日期

转载 作者:行者123 更新时间:2023-12-04 14:26:59 25 4
gpt4 key购买 nike

我想根据 4-4-5 calendar 构建一个查询来获取 Oracle SQL 数据库中某个期间的第一个日期和最后一个日期。实现以下目标:

enter image description here

任何人都可以帮助我吗?我尝试了以下查询,但无法达到目的:

alter session set NLS_TERRITORY = 'THE NETHERLANDS';
alter session set NLS_CALENDAR='GREGORIAN';
SELECT add_months(trunc(sysdate) - (to_number(to_char(sysdate,'DD')) - 1), 1) -1 FROM dual;

最佳答案

第一个周期的初始日期或者是在外部提供的(我在 WITH 子句中这样做了;更有可能它是一个绑定(bind)变量,或者是过程的一个参数),或者它可以根据规则在一个单独的代码块。

有了给定或计算出的初始日期,剩下的就可以完成了,例如,如下所示。

with
inputs ( input_date ) as (
select date '2017-01-02' from dual
)
select level as period_number,
input_date + 28 * (level - 1) + 7 * trunc((level-1)/3) as period_start,
input_date + 28 * level - 1 + 7 * trunc( level /3) as period_end,
case mod(level, 3) when 0 then 35 else 28 end as days_in_period
from inputs
connect by level <= 12
;



PERIOD_NUMBER PERIOD_START PERIOD_END DAYS_IN_PERIOD
------------- ------------ ------------ --------------
1 2-1-2017 29-1-2017 28
2 30-1-2017 26-2-2017 28
3 27-2-2017 2-4-2017 35
4 3-4-2017 30-4-2017 28
5 1-5-2017 28-5-2017 28
6 29-5-2017 2-7-2017 35
7 3-7-2017 30-7-2017 28
8 31-7-2017 27-8-2017 28
9 28-8-2017 1-10-2017 35
10 2-10-2017 29-10-2017 28
11 30-10-2017 26-11-2017 28
12 27-11-2017 31-12-2017 35

关于sql - 如何根据公历计算Oracle SQL中一个期间的第一个日期和最后一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48082207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com