Marcio_Meireles 0 Report post Posted April 8, 2010 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 Quote Share this post Link to post Share on other sites
Jair - Fórmula 147 Report post Posted April 8, 2010 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. Quote Share this post Link to post Share on other sites
Marcio_Meireles 0 Report post Posted April 9, 2010 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. Quote Share this post Link to post Share on other sites
Jair - Fórmula 147 Report post Posted April 9, 2010 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. Quote Share this post Link to post Share on other sites
Marcio_Meireles 0 Report post Posted April 15, 2010 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. Quote Share this post Link to post Share on other sites
zanetti 0 Report post Posted April 11, 2013 (edited) 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 April 11, 2013 by zanetti Quote Share this post Link to post Share on other sites
Gleyson Lira 0 Report post Posted June 26, 2013 Zanetti, Estava procurando algo mais ou menos assim. Vocês conhecem alguma consulta baseada na GCALENDARIO para que possamos considerar seus calendários? Quote Share this post Link to post Share on other sites
Frederico 57 Report post Posted August 27, 2013 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 Quote Share this post Link to post Share on other sites
Jair - Fórmula 147 Report post Posted August 29, 2013 Graaaande Frederico ! Quote Share this post Link to post Share on other sites
Frederico 57 Report post Posted August 29, 2013 E ai Jair, só passeando ai sim !!!!! bom retorno !!!! Quote Share this post Link to post Share on other sites