La pregunta es cómo determinar, dado un rango de fechas, cuántos días domingos hay.
SQL Server no tiene una función propia como tal, así que podemos utilizar la siguiente
función la cual le enviamos el rango de fechas.
CREATE FUNCTION fncCuantosDomingosHay (@inicio DATETIME, @fin DATETIME) RETURNS integer AS BEGIN DECLARE @dia_sem INT DECLARE @domingos INT DECLARE @fecha datetime SET @fecha=@inicio SET @domingos=0 while @fecha <= @fin BEGIN SELECT @dia_sem=datepart(weekday,@fecha) IF @dia_sem=1 SET @domingos=@domingos+1 SELECT @fecha=dateadd(dd,1,@fecha) END return @domingos END --EJECUTAMOS LA FUNCIÓN declare @total integer exec @total= fncCuantosDomingosHay '2013/10/16','2013/11/15' print @total --Resultado: 4
buen aporte me ayudo en mi trabajo.... mas bien lo modifique para que funcione para todos los días de la semana
ReplyDeleteAquí les dejo el código modificado
ReplyDeleteCREATE FUNCTION fncCuantosDiasHay (@inicio DATETIME, @fin DATETIME,@dia_sem2 int)
RETURNS integer
AS
BEGIN
DECLARE @dia_sem INT
DECLARE @dia INT
DECLARE @fecha datetime
SET @fecha=@inicio
SET @dia=0
while @fecha <= @fin
BEGIN
SELECT @dia_sem=datepart(weekday,@fecha)
IF @dia_sem=@dia_sem2
SET @dia=@dia+1
SELECT @fecha=dateadd(dd,1,@fecha)
END
return @dia
END
--EJECUTAMOS LA FUNCIÓN
declare @total integer
exec @total= fncCuantosDiasHay '01/12/2014','09/12/2014',3
print @total
Resultado 1 por que el ultimo valor me indica que día quiero consultar
1 -> Lunes
2 -> Martes
3 -> Miercoles
4 -> Jueves
5 -> Viernes
6 -> Sábado
7 -> Domingo