Jump to content
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Message added by Jair - Fórmula

Veja que foi usado em uma parte no texto do script o VARCHAAAAR e não o nome correto, pois, há um bloqueio de segurança para evitar códigos maliciosos que façam ataques no fórum. Então, apenas enviando em arquivo, ou trocando essa palavra desta forma que fiz. Ao copiar e passar para seu ambiente, sempre deverá corrigir para o termo correto!!

Recommended Posts


  • Topic Count:  951
  • Topics Per Day:  0.13
  • Content Count:  9,211
  • Content Per Day:  1.24
  • Reputation:   465
  • Achievement Points:  109,965
  • Solved Content:  0
  • Days Won:  270
  • Status:  Offline
  • Age:  54
  • Device:  Windows

Posted

Script com função para montagem de data com último dia útil do mês, considerando a tabela de feriados do RM, ou seja, se o último dia do mês cair em algum feriado cadastrado no RM, retorna o dia útil anterior.Para o caso de usar versão do SQL mais antiga, onde não existe a função EOMONTH(). É só comentar a linha em questão que usa essa função do SQL Server deixando a outra. Mantenha a que preferir usar... 
 

If OBJECT_ID (N'dbo.fnc_UltDiaUtilRM' ) is not null 
    Drop Function dbo.fnc_UltDiaUtilRM;  
Go
Create Function dbo.fnc_UltDiaUtilRM (@DataBase DateTime)
Returns Date 
as
Begin
    
    Declare @UltDia Date 
    Declare @CalendOficial Varchaaaar(10) 

    Set @CalendOficial = '0000001' -- Código do Calendário Oficial a ser usado do RM
    
    -- Usando a Função EOMONTH que funciona para o SQL 2012 em diante...
    Set @UltDia = EOMONTH(@DataBase) 
     
    -- Usando a Função DateAdd apenas para montar o último dia do mês, que funciona para o SQL 2008 e mais atuais...
    Set @UltDia = DATEADD(dd, -DAY(DATEADD(M, 1, @DataBase)), DATEADD(M, 1, @DataBase))
      
inicio:

    If  (    Select DiaFeriado 
            From GFeriado (nolock)
            Where DiaFeriado = @UltDia
                and CodCalendario = @CalendOficial ) is not null
    Begin
        
    Set @UltDia = DateAdd(d, -1, @UltDia)
        
    End
        
    if   
        (Select DatePart(dw, @UltDia)) in (1, 7) 
        or    
        (    Select DiaFeriado 
                From GFeriado (nolock)
                Where DiaFeriado = @UltDia
                    and CodCalendario = @CalendOficial ) is not null
    Begin
        Set @UltDia = DateAdd(d, -1, @UltDia)
        goto inicio
    End
    
    Return(@UltDia)
    
End
Go

-- Exemplo de utilização
Select dbo.fnc_UltDiaUtilRM (Getdate())


Exemplo de utilização
Select dbo.fnc_UltDiaUtilRM (Getdate())

 

**** Veja que foi usado em uma parte no texto acima o VARCHAAAAR e não o nome correto, pois, há um bloqueio de segurança para evitar códigos maliciosos que façam ataques no fórum. Então, apenas enviando em arquivo, ou trocando essa palavra desta forma que fiz. Ao copiar e passar para seu ambiente, sempre deverá corrigir para o termo correto!! 😀

  • Replies 0
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.