Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

PauloTI

Data/sql/virada de Ano

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;  

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.