Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

Função p/ montar Data c/ ultimo dia do mes


Posts Recomendados


  • Tópicos Que Criei:  899
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.842
  • Conteúdo/Dia:  1.34
  • Reputação:   310
  • Pontos/Conquistas:  106.579
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Uma função que pode ser bem útil na hora de montar alguns relatórios, no MSSQL, é esta para tratar as datas e trazer sempre o último dia do mês. Ela recebe como parametro apenas o MES e o ANO.

Por exemplo, pra montar a data com o início do mes, da PFFINANC, pode-se montar com o MESCOMP e ANOCOMP, adicionando '01' no início sempre... mas o final, o último dia, é variável.

Estava falando com o Júnior ( grande colaborador aqui do Fórum ) e montei essa função, que você pode utilizar em qualquer sentença.

-=-=-=-=-=-=-=-=-=-=-=-

Create Function ZFimdoMes (@mes int, @ano int)

Returns Datetime

Begin

----------------------------------------------------------------------------------

-- Função para gerar uma data com o último dia do mes,

-- recebendo como parametros apenas o mes e ano.

--

-- Criada por Jair G. Silva - Fórmula Desenvolvimento (17/08/06)

----------------------------------------------------------------------------------

Declare @FimdoMes Datetime

Select @FimdoMes = DateAdd(Month,1,(cast((Cast(@Ano as varchar)

+ '/' + cast(@Mes as varchar) + '/' + '01' ) as Datetime)))-1

Return (@FimdoMes)

---------------------------------------------------------------------------------

-- Para usar a função, deve sempre chamar como no exemplo abaixo:

-- Select dbo.ZFimdoMes(8,2006) ou Select dbo.ZFimdoMes( mescomp , anocomp )

---------------------------------------------------------------------------------

End

-=-=-=-=-=-=-=-=-=-=-=-

Espero que possa lhe ajudar em suas próximas sentenças e montagens de relatórios.

Abraços.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  134
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  1.225
  • Conteúdo/Dia:  0.19
  • Reputação:   2
  • Pontos/Conquistas:  7.400
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Dispositivo:  Windows

Jair, e quando for dezembro ? 12/2006.

EX: vai montar datadd(month+1) que vai ser = 01 (12+1) em datas

depois, vai manter o ano 2006 e montando a data 01/01/2006

que tirando 1 vai ficar 31/12/2005 . Um ano antes.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  899
  • Tópicos/Dia:  0.14
  • Meu Conteúdo:  8.842
  • Conteúdo/Dia:  1.34
  • Reputação:   310
  • Pontos/Conquistas:  106.579
  • Conteúdo Resolvido:  0
  • Dias Ganho:  195
  • Status:  Offline
  • Idade:  52
  • Dispositivo:  Windows

Jair, e quando for dezembro ? 12/2006.

EX: vai montar datadd(month+1) que vai ser = 01 (12+1) em datas

depois, vai manter o ano 2006 e montando a data 01/01/2006

que tirando 1 vai ficar 31/12/2005 . Um ano antes.

Normal Mauricio... não vai dar problema não. A função DATEADD trata isso, ou seja, quando mandamos adicionar um mes na data, ele gerará 01/01/2007 e não 01/01/2006 como você imaginou. Calculando depois a data final como 31/12/2006.

:rolleyes:

Flws.

Abraços.

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.