Função SQL que retorna os dias em um intervalo de datas


CREATE     function fnGetDiasNoIntervaloData

(

    @anoInicio smallint, 

    @mesInicio tinyint, 

    @diaInicio tinyint, 

    @anoFim smallint, 

    @mesFim tinyint, 

    @diaFim tinyint

)

returns @datas table 

    (

        data smalldatetime, 

        diaSemana varchar(13)

    )

as

begin

declare @dataInicial datetime

declare @dataFinal datetime

declare @dia varchar(13)

SELECT @dataInicial = cast(@anoInicio as varchar(4))+ '-' + 

              cast(@mesInicio as varchar(2)) + '-' + 

              cast(@diaInicio as varchar(2))

SELECT @dataFinal = cast(@anoFim as varchar(4))+ '-' +

            cast(@mesFim as varchar(2)) + '-' + 

            cast(@diaFim as varchar(2))

SELECT @dia = (SELECT [GAP].[dbo].[fnGetDIASemanaExt](@dataInicial))

WHILE @dataInicial <= @dataFinal

begin

insert into @datas values (@dataInicial, @dia)

SELECT 

    @dataInicial = DATEADD(DAY,1,@dataInicial), 

    @dia = (SELECT [GAP].[dbo].[fnGetDIASemanaExt](@dataInicial))

end

return

end

--select * from fnGetDiasNoIntervaloData(2009,1,1,2009,1,31)

Comentários

Postagens mais visitadas deste blog

Funcão SQL para abreviar nomes

Função em JavaScript para consulta de CEP com retorno em XML ou Json