如何根据公历计算Oracle SQL中句点中的第一个日期和最后一个日期
发布时间:2020-12-12 16:29:06 所属栏目:百科 来源:网络整理
导读:我想构建一个查询来获取Oracle SQL数据库中某个句点的第一个日期和最后日期,按照 4-4-5 calendar来实现如下所示: 任何人都可以帮助我吗?我尝试了以下查询,但无法达到目的: alter session set NLS_TERRITORY = 'THE NETHERLANDS';alter session set NLS_CA
我想构建一个查询来获取Oracle SQL数据库中某个句点的第一个日期和最后日期,按照
4-4-5 calendar来实现如下所示:
任何人都可以帮助我吗?我尝试了以下查询,但无法达到目的: 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子句中;更可能是一个绑定变量,或一个过程的in参数),或者它可以根据规则计算,在单独的代码块. 在给定或计算初始日期的情况下,其余的可以完成,例如,如下所示. 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |