Função para gerar tabela com listagem contendo intervalo entre duas datas. (SqlServer)

Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 15/08/2021


Gera uma tabela com listagem contendo o intervalo entre duas datas especificadas Ms SQLServer.


Forneça a data de inicio e fim do período desejado e a função vai retornar uma tabela (TABLE), com as datas no intervalo indicado.

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fn_IntervaloDatas]') AND type in (N'IF', N'FN'))
    DROP FUNCTION [dbo].[fn_IntervaloDatas]
GO

-- ================================================================
-- Author     : Antonio Azevedo 
--                  www.codigoexpresso.com.br
-- Create date: 15/08/2021
-- Description: Tabela com listagem de intervalo de datas
-- ================================================================

CREATE FUNCTION [dbo].[fn_IntervaloDatas]
(
    @DataInicial DATE,
    @DataFinal DATE
)
RETURNS TABLE
AS
RETURN
(
    WITH intervalo AS
    (
      SELECT  data = @DataInicial WHERE @DataInicial < @DataFinal
      
      UNION ALL

      SELECT DATEADD(DAY, 1, data) FROM intervalo WHERE DATEADD(DD, 1, data) <= @DataFinal
    )
   
    SELECT data FROM intervalo
)

Exemplo de utilização

Você pode utilizar nossa função como se fosse uma tabela, fazendo referencia a ela como tal.

SELECT  * FROM dbo.[fn_IntervaloDatas] ('2021-01-01', '2021-01-10')

Resultado
---------------
data
2021-01-01
2021-01-02
2021-01-03
2021-01-04
2021-01-05
2021-01-06
2021-01-07
2021-01-08
2021-01-09
2021-01-10


Não deixe de comentar, seu comentário é importante.



Links Relacionados



Comentários