Ir para conteúdo
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

SQL - Funcao para pegar somente dia uteis<b> (Resolvido)</b>


Posts Recomendados


  • Tópicos Que Criei:  25
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  71
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  605
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  45

Bom dia

Necessito de uma funcao em SQL Server, para pegar só os dias uteis da semana (ignorar sabado e domingo), é para calculo de juros e desconto.

obrigado

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  884
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.800
  • Conteúdo/Dia:  1.34
  • Reputação:   289
  • Pontos/Conquistas:  106.251
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Online
  • Idade:  51
  • Dispositivo:  Windows

Olá Marcio,

Verifique e use essa função de datas do SQL nas suas sentenças:

SELECT DATENAME(weekday,'1995-10-30 12:15:32.123') ou SELECT DATENAME(dw,'1995-10-30 12:15:32.123');

Retorno: "Monday"

No seu caso, quando retornar Saturday ou Sunday serão dias de fim de semana. :yahoo:

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  25
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  71
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  605
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  45

Valeu, deu certo, obrigado

Olá Marcio,

Verifique e use essa função de datas do SQL nas suas sentenças:

SELECT DATENAME(weekday,'1995-10-30 12:15:32.123') ou SELECT DATENAME(dw,'1995-10-30 12:15:32.123');

Retorno: "Monday"

No seu caso, quando retornar Saturday ou Sunday serão dias de fim de semana. :)

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  884
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.800
  • Conteúdo/Dia:  1.34
  • Reputação:   289
  • Pontos/Conquistas:  106.251
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Online
  • Idade:  51
  • Dispositivo:  Windows

Aviso Sobre MultiModeração para Membros

Que bom que resolveu o problema.

Agora no fórum existe o esquema de multimoderação onde o próprio usuário que abriu o post pode marcar como resolvido.

Dá uma olhada no link abaixo que mostra como fazer.

http://www.forumrm.com.br/index.php?showtopic=1555

:) Agradeceríamos se nos ajudasse já marcando o seu tópico sempre que resolvido.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  25
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  71
  • Conteúdo/Dia:  0.01
  • Reputação:   0
  • Pontos/Conquistas:  605
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  45

Tópico Fechado / Resolvido.

O mesmo foi marcado como resolvido por não haver mais nada a resolver, pelo mesmo ter ficado parado por muito tempo sem o membro que o iniciou voltar a participar ou comentar, ou por não ter mais comentários de nenhum outro membro do Fórum.

Qualquer coisa, alguma dúvida ou questionamento sobre o assunto, pode postar novamente que analisaremos, ou se preferir, favor entrar em contato com a administração ou moderação, através do link: Administradores e Moderadores que retiraremos o STATUS de RESOLVIDO do seu título.

Se preferir, mande um email para admin@forumrm.com.br solicitando.

Link para comentar
Compartilhar em outros sites

  • 2 anos depois...

  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  7
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  45
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  41

Não sei se entendi bem, porem vou deixar aqui um caso que precisei a um tempo atrás, precisava buscar a diferença entre duas datas sem contar o final de semana, desenvolvi essa função para SQL SERVER :

DECLARE @CONT INT , @DATA_INICIAL DATETIME, @DATA_FINAL DATETIME

SET @DATA_INICIAL = (SELECT CAST('04-04-2013' AS DATE) )

SET @DATA_FINAL = (SELECT CAST(GETDATE() AS DATE ))

SET @CONT = 0

DECLARE @TAB AS TABLE (SEMANA INT, DATA DATETIME, CONT INT )

WHILE @CONT < (SELECT DATEDIFF(DD, @DATA_INICIAL, @DATA_FINAL ))

BEGIN

INSERT INTO @TAB SELECT DATEPART(DW,(DATEADD(DD, @CONT, @DATA_INICIAL))), DATEADD(DD, @CONT, @DATA_INICIAL), @CONT

SET @CONT = @CONT+1

END

SELECT COUNT(SEMANA) FROM @TAB WHERE SEMANA NOT IN (1,7)

Editado por zanetti
Link para comentar
Compartilhar em outros sites

  • 2 meses depois...

  • Tópicos Que Criei:  0
  • Tópicos/Dia:  0
  • Meu Conteúdo:  6
  • Conteúdo/Dia:  0.00
  • Reputação:   0
  • Pontos/Conquistas:  30
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  35

Zanetti,

Estava procurando algo mais ou menos assim. Vocês conhecem alguma consulta baseada na GCALENDARIO para que possamos considerar seus calendários?

Link para comentar
Compartilhar em outros sites

  • 2 meses depois...

  • Tópicos Que Criei:  11
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  1.140
  • Conteúdo/Dia:  0.22
  • Reputação:   60
  • Pontos/Conquistas:  6.161
  • Conteúdo Resolvido:  0
  • Dias Ganho:  33
  • Status:  Offline
  • Idade:  42
  • Dispositivo:  Windows

Gleyson,

Veja se essa te ajuda.

CREATE FUNCTION [dbo].[FCNDIASUTEIS] (@DATAINICIAL DATETIME, @DATAFINAL DATETIME)

RETURNS INT

AS

BEGIN

-- CRIA VARIAVEIS

DECLARE @FERIADOS INT, @RETORNO INT, @DIASAUX INT, @DATAAUX DATETIME

-- SETA PRIMEIRO DIA DA SEMANA EM DOMINGO

--SET DATEFIRST 7

-- MONTA CURSOR

DECLARE CURSORFERIADO CURSOR FOR

SELECT COUNT(*) 'TOTAL' FROM GFERIADO

WHERE DIAFERIADO BETWEEN @DATAINICIAL + 1 AND @DATAFINAL

AND DATEPART(DW, DIAFERIADO) NOT IN (1, 7) AND CODCALENDARIO = '2'

-- ABRE CURSOR

OPEN CURSORFERIADO

-- PEGA PRIMEIRO

FETCH NEXT FROM CURSORFERIADO INTO @FERIADOS

-- SETA DIAS ÚTEIS COMO 0

SET @RETORNO = DATEDIFF(DAY, @DATAINICIAL, @DATAFINAL)

-- SETA DATA AUXILIAR PARA CÁLCULOS

SET @DATAAUX = @DATAFINAL

-- CONTABILIZA DIAS ÚTEIS

WHILE @DATAINICIAL <= @DATAAUX

BEGIN

-- SE FOR FINAL DE SEMANA, DESCONSIDERA DO TOTAL

IF DATEPART(DW, @DATAAUX) IN (1, 7)

BEGIN

SET @RETORNO = @RETORNO - 1

END

-- SUBTRAI UM DA DATA AUXILIAR

SET @DATAAUX = @DATAAUX - 1

END

-- CORRIGE CASO DATA INICIAL SEJA UM FDS

IF DATEPART(DW, @DATAINICIAL) IN (1, 7)

BEGIN

SET @RETORNO = @RETORNO + 1

END

-- FECHA CURSOR

CLOSE CURSORFERIADO

DEALLOCATE CURSORFERIADO

-- DESCONSIDERA OS FERIADOS

SET @RETORNO = @RETORNO - @FERIADOS

RETURN(@RETORNO)

END

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  884
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.800
  • Conteúdo/Dia:  1.34
  • Reputação:   289
  • Pontos/Conquistas:  106.251
  • Conteúdo Resolvido:  0
  • Dias Ganho:  185
  • Status:  Online
  • Idade:  51
  • Dispositivo:  Windows

Graaaande Frederico ! :)

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  11
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  1.140
  • Conteúdo/Dia:  0.22
  • Reputação:   60
  • Pontos/Conquistas:  6.161
  • Conteúdo Resolvido:  0
  • Dias Ganho:  33
  • Status:  Offline
  • Idade:  42
  • Dispositivo:  Windows

E ai Jair, só passeando ai sim !!!!! bom retorno !!!!

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.