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.
Abços
Datas equivalentes
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.
Abços
-
- 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');
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');
Bacana. Gostei da solução!
Vou implementar e ver o resultado.
Vou implementar e ver o resultado.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google [Bot] e 24 visitantes