Ir para conteúdo
  • 0

Retornar os últimos 3 meses


Paulo Cesar

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos

Oi @Paulo Cesar

Então, o que te passei vai trazer justamente o que você precisa, pois as fórmulas abaixo retornam o último dia do mês fechado (31/10) e a outra fórmula retornará 3 meses antes (01/08).

DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))  AND DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1)

SELECT * 
FROM TABLE_NAME
WHERE Date_Column BETWEEN DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))  AND DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1) 

Testa dessa forma que passei que você vai compreender o que estou falando, inclusive se quiser testar as datas que são retornadas podes fazer assim:

SELECT
DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)),
DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1)

 

image.png.f1a80b132f6ed415c3840841bdd82a19.png

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
5 horas atrás, Michele disse:

Olá @Paulo Cesar!

Com essas duas colunas abaixo você consegue isso de forma dinâmica:

  • DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1) AS UltimoDiaMesFechado,
  • DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)) AS PrimeiroDia3MesesAnteriores

Desta forma basta você fazer assim para ter dados entre este intervalo:

SELECT
ListadeCampos...

WHERE CampoData BETWEEN
DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))  AND DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1)

 

 

@Michele, boa tarde!

estou usando essa mais está trazendo o mês atual.

SELECT * 
FROM TABLE_NAME
WHERE Date_Column >= DATEADD(MONTH, -3, GETDATE()) 
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
5 horas atrás, Michele disse:

Olá @Paulo Cesar!

Com essas duas colunas abaixo você consegue isso de forma dinâmica:

  • DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1) AS UltimoDiaMesFechado,
  • DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)) AS PrimeiroDia3MesesAnteriores

Desta forma basta você fazer assim para ter dados entre este intervalo:

SELECT
ListadeCampos...

WHERE CampoData BETWEEN
DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))  AND DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1)

 

Preciso trazer os meses 08, 09 e 10

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
5 minutos atrás, Michele disse:

Oi @Paulo Cesar

Então, o que te passei vai trazer justamente o que você precisa, pois as fórmulas abaixo retornam o último dia do mês fechado (31/10) e a outra fórmula retornará 3 meses antes (01/08).

DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))  AND DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1)

SELECT * 
FROM TABLE_NAME
WHERE Date_Column BETWEEN DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))  AND DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1) 

Testa dessa forma que passei que você vai compreender o que estou falando, inclusive se quiser testar as datas que são retornadas podes fazer assim:

SELECT
DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)),
DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1)

 

image.png.f1a80b132f6ed415c3840841bdd82a19.png

Eu fiz dessa forma

image.png.d692553989f53f28685ea3f17607edf7.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @Paulo Cesar!

Tanto faz usar o MONTH ou esse "m", o -1 te retorna o último dia do mês fechado, se deixar 0 vai retornar o primeiro dia do mês atual. Isso é uma fórmula muito usada para obter este tipo de informação, neste link tem um pouco da explicação: https://stackoverflow.com/questions/11665119/dateaddmonth-datediffmonth-0-getdate-0-can-someone-explain-me-this

O que você fez parece estar correto, confira se as datas estão dentro do range que você deseja, mas é para estarem, pois as datas que essas funções retornam são exatamente o último dia do mês fechado e o primeiro dia do mês inicial que você deseja.

Caso não esteja retornando algo que deveria, passe um exemplo para ficar mais fácil a compreensão.

Link para o comentário
Compartilhar em outros sites

  • -1
  • Alunos

Olá @Paulo Cesar!

Com essas duas colunas abaixo você consegue isso de forma dinâmica:

  • DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1) AS UltimoDiaMesFechado,
  • DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)) AS PrimeiroDia3MesesAnteriores

Desta forma basta você fazer assim para ter dados entre este intervalo:

SELECT
ListadeCampos...

WHERE CampoData BETWEEN
DATEADD(MONTH,-3, DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0))  AND DATEADD(m, DATEDIFF(m, 0, GETDATE()), -1)

 

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...