Query para obter a quantidade de dias dentro de um período

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Seg, 24 Set 2018 5:01 pm

Boas senhores,

Preciso pegar informações entre datas onde esta data pode estar entre 2 meses.
Como faço para pegar a quantidade de dias de cada mês dentro deste período?
Exemplo: Data inicial = 24/08/2018 e Data final= 10/09/2018
Tenho 17 dias no mês 08 e 10 dias no mês 09..
Como trazer isso via query?
Obrigado e t+
xprata
Localização: São Paulo - SP

Mensagemem Ter, 25 Set 2018 10:38 am

hmmm..
Acho que entendi sua dúvida:

Você quer uma resposta assim:
MARÇO/2018 - 20 DIAS
ABRIL/2018 - 15 DIAS
.
.
.

é isso ?
dr_gori
Localização: Seattle, WA, USA

Thomas F. G

Mensagemem Qua, 26 Set 2018 6:15 pm

Correto
Obrigado pelo retorno
xprata
Localização: São Paulo - SP

Mensagemem Sex, 28 Set 2018 8:56 am

Sabe como fazer?
xprata
Localização: São Paulo - SP

Mensagemem Sáb, 24 Nov 2018 1:53 am

(last_day(dt_inicio) - dt_inicio) QTD_DIAS_INICIO
(dt_fim - trunc(dt_fim,'mm')) QTD_DIAS_FIM

Isso?? :?
ballboas
Localização: sp

Érico Balboa

A pergunta mais cretina é aquela que não é feita

Mensagemem Seg, 26 Nov 2018 11:49 am

Olá,

acredito que da seguinte forma deve atender tua necessidade:

Código: Selecionar todos
WITH meses AS (
SELECT ADD_MONTHS(data_inicial, LEVEL - 1)  dia
     , TRUNC(to_date(&p_ini, 'dd/mm/rrrr')) INI
     , TRUNC(to_date(&p_fim, 'dd/mm/rrrr')) FIM
  FROM (SELECT trunc(to_date(&p_ini, 'dd/mm/rrrr')) data_inicial FROM dual)
CONNECT BY LEVEL <= MONTHS_BETWEEN(TRUNC(to_date(&p_fim, 'dd/mm/rrrr'),'MM'),TRUNC(to_date(&p_ini, 'dd/mm/rrrr'),'MM')) + 1
)

SELECT m.dia
     , m.ini
     , m.fim
     , LEAST (m.fim, LAST_DAY(m.dia) )   MENOR-- MENOR OU DATA final, ou ultima dia do mês
     , GREATEST(m.ini,TRUNC(m.dia,'MM')) MAIOR -- MAIOR OU DATA inicial, ou primeiro do mês     
     , TRUNC(m.dia,'MM') PERIODO
     , LEAST (m.fim, LAST_DAY(m.dia) ) - GREATEST(m.ini,TRUNC(m.dia,'MM')) + 1 DIAS_PERIODO
  FROM meses m
DanielNN
Localização: Fortaleza - CE

att,

Daniel N.N.



Voltar para PL/SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante