Datas equivalentes

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
almir.jg
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qua, 20 Jan 2016 9:20 am

:?: Olá para todos :?:
Srs., tenho hoje o seguinte problema.:
Necessito obter uma data equivalente, ou seja...
Hoje = 28/12/2016, qual seria a data equivalente a esta data, a um mês atrás e a um ano atrás.
Vou ser mais claro
Para um ANO:
Sendo hoje=28/12/2016, estamos numa 4a. feira da 52a. semana, necessito obter qual o dia do mês equivalente a 4a. feira da 52a. semana do ano passado.
Para um mês:
Hoje = 28/12/2016, estamos numa 4a. feira e na 4a. semana do mês, então necessito pegar a 4a. feira da 4a. semana do mês passado.
Parece confuso mas não é. Isto é para um projeto de B.I.
Através de pl/sql, faço tranquilamente mas preciso através de uma conversão de datas, por isso apelo aos amigos do forum para me darem sugestões.

A ideia básica e fazer isso através de uma conversão de datas.
Mas aceito qualquer sujestão.

:-o Abços :-o
almir.jg
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qua, 20 Jan 2016 9:20 am

almir.jg escreveu::?: Olá para todos :?:
Srs., tenho hoje o seguinte problema.:
Necessito obter uma data equivalente, ou seja...
Hoje = 28/12/2016, qual seria a data equivalente a esta data, a um mês atrás e a um ano atrás.
Vou ser mais claro
Para um ANO:
Sendo hoje=28/12/2016, estamos numa 4a. feira da 52a. semana, necessito obter qual o dia do mês equivalente a 4a. feira da 52a. semana do ano passado.
Para um mês:
Hoje = 28/12/2016, estamos numa 4a. feira e na 4a. semana do mês, então necessito pegar a 4a. feira da 4a. semana do mês passado.
Parece confuso mas não é. Isto é para um projeto de B.I.
Através de pl/sql, faço tranquilamente mas preciso através de uma conversão de datas, por isso apelo aos amigos do forum para me darem sugestões.

A ideia básica e fazer isso através de uma conversão de datas.
Mas aceito qualquer sugestão.

:-o Abços :-o
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Bom dia Almir,

Já que você aceita qualquer sugestão, tenta essa...
Não é muito bonita mas acho que resolve.

Select Dt_Emis, to_char(Dt_Emis,'d'), to_char(Dt_Emis,'ww')
from (select trunc(sysdate) - Level Dt_Emis
From dual
CONNECT BY LEVEL <= 7200)
where trunc(dt_emis) between trunc(add_months(trunc(sysdate),-12),'year') and add_months(trunc(sysdate),-12)
and to_char(Dt_Emis,'ww') = to_char(sysdate,'ww')
and to_char(Dt_Emis,'d') = to_char(sysdate,'d');
almir.jg
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 8
Registrado em: Qua, 20 Jan 2016 9:20 am

Bacana. Gostei da solução!
Vou implementar e ver o resultado.
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

beleza,

Se quiser, pode mudar de 7200 para 380 por exemplo.

é que eu aproveitei um outro select que eu tinha.
Responder
  • Informação