Jair - Fórmula Postado 17 de Agosto de 2006 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 Denunciar Compartilhar Postado 17 de Agosto de 2006 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Mauricio J. T. Postado 18 de Agosto de 2006 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 Denunciar Compartilhar Postado 18 de Agosto de 2006 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. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 18 de Agosto de 2006 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 Autor Denunciar Compartilhar Postado 18 de Agosto de 2006 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. Flws. Abraços. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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.