Jump to content
Sign in to follow this  
Marcio_Meireles

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

Recommended Posts

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:

Share this post


Link to post
Share on other sites

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. :)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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)

Edited by zanetti

Share this post


Link to post
Share on other sites

Zanetti,

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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

Sign in to follow this  

×
×
  • Create New...

Important Information

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