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+
Query para obter a quantidade de dias dentro de um período
- dr_gori
- Moderador
- Mensagens: 5013
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
hmmm..
Acho que entendi sua dúvida:
Você quer uma resposta assim:
MARÇO/2018 - 20 DIAS
ABRIL/2018 - 15 DIAS
.
.
.
é isso ?
Acho que entendi sua dúvida:
Você quer uma resposta assim:
MARÇO/2018 - 20 DIAS
ABRIL/2018 - 15 DIAS
.
.
.
é isso ?
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Olá,
acredito que da seguinte forma deve atender tua necessidade:
acredito que da seguinte forma deve atender tua necessidade:
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
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 2 visitantes