Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Atualmente, tenho um processo que funciona EM PARTES, porém estou com uma duvida e preciso solucionar este problema.
EXISTEM 2 VARIÁVEIS
V_MONTHS
V_YEAR
EXISTEM DOIS SELECTS
SELECT TRUNC(TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY')) INTO **V_YEAR**
FROM DUAL; ( PEGA O ANO ATUAL )
SELECT TO_CHAR(SYSDATE, 'MM')-1 INTO **V_MONTHS **FROM DUAL;
(PEGA MÊS ANTERIOR AO ATUAL )
Essas duas variáveis são usadas em um select logo abaixo do processo.
Select: bla bla bla bla bla
FROM CICLE X
WHERE X. YEAR = V_YEAR
AND X. MONTHS = V_MONTHS ;
Lembrando que isso está dentro de um Bloco PL/SQL e que o exemplo acima, é bem Cru.
A questão é a partir de 2016, vai ter um problema " Ele vai pegar ANO atual " mas e o Mês12 de dezembro de 2015?
Este processo irá entrar em produção ainda este mês, por este motivo, preciso resolver isso o quanto antes.
Alguém tem alguma ideia por gentileza?
É necessário que mês que vem 01/2016, ele busque o MÊS -1 que no caso seria, 12 do ano de 2015.
Alguém poderia me ajudar?
Obrigado.
Att.
Mota, Boa noite.
Perceba, que já estou fazendo isso, e eu preciso que seja uma solução separada,
pelo fato das variáveis.
SELECT TRUNC(TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY')) INTO **V_YEAR**
FROM DUAL; ( PEGA O ANO ATUAL )
SELECT TO_CHAR(SYSDATE, 'MM')-1 INTO **V_MONTHS **FROM DUAL;
(PEGA MÊS ANTERIOR AO ATUAL )
Acima, de uma olhada em como está hoje, tem " INTO <variavel >
Como vou jogar no WHERE sendo que as colunas da Tabela no WHERE são especificas Mês e ANO e é por este motivo, que faço dois SELECTS, um para Mês-1 e Ano Atual.
Consegue compreender ou eu não expliquei direito?
Obrigado pela resposta.
att
Assim exemplo:
SELECT TO_CHAR(
ADD_MONTHS(SYSDATE,-1), 'YYYY') "Ano_ATUAL"
FROM DUAL;
( Ano ATUAL )
SELECT TO_CHAR(
ADD_MONTHS(SYSDATE,-1), 'MM') "Mes_anterior"
FROM DUAL;
( Mês Anterior)
Mês que vem é 01/2016
Mas esses SELECTS acima, vão me trazer 12/2015 ?
Em testes no meu banco pessoal,
eu teria que fazer isso, para retornar por exemplo 2014
SELECT TO_CHAR(
ADD_MONTHS(SYSDATE,-12), 'YYYY') "Next month"
FROM DUAL;
Essa é minha duvida, por que, como vai entrar em produção, precisar ficar automatizado, e eu nunca fiz isso..
att.
Estou num tablet , muito ruim de editar código, mas bastaria , um só select ,
Dando add months -1 para a data atual obtendo o ano e mescdo mes anterior
Em
Novembro 15 > outubro 15
Dezembro 15 > novembro 15
Janeiro 16 > dezembro 15
Se for o caso edito amanhã o exemplo
Boa noite, Mota.
Fico no aguardo do exemplo, realmente não sei como implementar isso em código.
Mota, sempre lembrando, que eu preciso que seja em selects separados.
Devido ao Where e as Variáveis.
Att.
Não seria isto , obter o ano e mês anteriores a data corrente ?
SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-1), 'YYYY') "Ano_ATUAL",
TO_CHAR(ADD_MONTHS(SYSDATE,-1), 'MM') "mes_ATUAL"
into v_ano , v_mes
FROM DUAL;
Combine add_months (pode ser negativo) com o to_char.
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions004.htm
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions180.htm