Bueno, esta es mi version:
Código sql:
Ver originalALTER FUNCTION CuantosDiasSemana
(
@FechaInicio datetime,
@FechaFin datetime,
@DiaSemana tinyint = 1
)
RETURNS INT
AS
BEGIN
IF @FechaInicio > @FechaFin RETURN 0
DECLARE @RangoFechas TABLE(fecha datetime)
DECLARE @Dia datetime
SET @Dia = @FechaInicio
while @Dia <= @FechaFin
BEGIN
INSERT INTO @RangoFechas
SELECT @Dia
SET @Dia = @Dia + 1
END
RETURN (
SELECT SUM(CASE WHEN datepart(weekday, fecha) = @DiaSemana THEN 1 ELSE 0 END)
FROM @RangoFechas
)
END
El llamado:
Código sql:
Ver originalDECLARE @Dia1 INT
SET @Dia1 = @@DATEFIRST
SET DATEFIRST 1
SELECT dbo.CuantosDiasSemana('20090817','20090831',7)
SET DATEFIRST @Dia1