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

Função SQL que retorna valor (R$) por extenso