locked
Ajuda SQL - Listar Competência posteriores RRS feed

  • Pergunta

  •  

    Boa tarde Amigos,
    Estou com um sql a elaborar e estou com dificuldades pois tenho que listar um contas a pagar dos próximos meses, ou seja, considerando a data atual hoje (19/10/2007) tenho que listar o contas a pagar do mês 10/2007 e os próximos 6 meses separadamente. Exemplo: 11/2007, 12/2007, 01/2008, 02/2008, 03/2008 e 04/2008 (mês e ano em relação ao meses atual para frente).

    Tentei utilizar a linha abaixo para fazer este filtro, porém me traz o mês e descondera o ano (lista anos anteriores referente ao mesmo mês Exemplo: 09/2007, 09/2006 , 09/2005 ...)
    WHERE DATEPART(MONTH,CP.VENCIMENTO) = DATEPART(MONTH,(DATEADD(month,-1,Getdate())))
    Observação usei o -1 só para teste, tenho que fazer dos 6 meses para frente.

    Tentei usar o ano para resolver esta situação, porém quando chega no mês 12 dá erro, visto que estou considerando o ano atual e o mesmo irá passar para o ano seguinte:
    WHERE DATEPART(MONTH,CP.VENCIMENTO) = DATEPART(MONTH,(DATEADD(month,-1,Getdate())))

    AND      DATEPART(YEAR,CP.VENCIMENTO) = DATEPART(YEAR,getdate())


    Fico grato pela ajuda.

    Obrigado.

    sexta-feira, 19 de outubro de 2007 18:10

Respostas

  • Bom dia Junior,
    Consegui resolver, ficou assim:

    WHERE DATEPART(MONTH,CP.VENCIMENTO) = DATEPART(MONTH, DATEADD ( MONTH ,2, GetDate() ))
    AND   DATEPART(YEAR,CP.VENCIMENTO)  = DATEPART(YEAR, DATEADD ( MONTH ,2, GetDate() ))

     

    com isso quando mudo para ,2, e assim vai ,3, .... quando chegar em dezembro/2007 ele informar para ir para janeiro/2008 irá funcionar perfeitamente.

    Obrigado.

    segunda-feira, 22 de outubro de 2007 10:43

Todas as Respostas

  • Du,

     

    Mas qual é erro que esta dando?

    sexta-feira, 19 de outubro de 2007 18:39
    Moderador
  • Bom dia Junior,
    Consegui resolver, ficou assim:

    WHERE DATEPART(MONTH,CP.VENCIMENTO) = DATEPART(MONTH, DATEADD ( MONTH ,2, GetDate() ))
    AND   DATEPART(YEAR,CP.VENCIMENTO)  = DATEPART(YEAR, DATEADD ( MONTH ,2, GetDate() ))

     

    com isso quando mudo para ,2, e assim vai ,3, .... quando chegar em dezembro/2007 ele informar para ir para janeiro/2008 irá funcionar perfeitamente.

    Obrigado.

    segunda-feira, 22 de outubro de 2007 10:43