Procedure que retorna o intervalo entre duas datas

Olá pessoal…

Hoje vou mostrar uma procedure que desenvolvi para SQL Server que retorna o intervalo entre duas datas.

Para utilizar essa procedure, basta executá-la e passar as duas datas na frente, a inicial e a final, por exemplo:

exec sp_X_Datas '20160201', '20160401'

Abaixo um print de exemplo da execução.

Execução da Procedure

Execução da Procedure

Abaixo o código completo da procedure.

--Exclui procedure
IF OBJECT_ID('dbo.sp_X_Datas', 'P') IS NOT NULL
    DROP PROCEDURE [dbo].[sp_X_Datas]
GO

--Cria a procedure
CREATE PROCEDURE sp_X_Datas (
  @DataIni Varchar( 08 ),
  @DataFin VARCHAR( 08 )
)
AS BEGIN
	DECLARE @DtAuxIni DATETIME
	DECLARE @DtAuxAtu DATETIME
	DECLARE @DtAuxFin DATETIME
	DECLARE @TabDados TABLE (DATA_AUX DATETIME, DATA_CHAR VARCHAR(10))

	--Converte as datas
	SET @DtAuxIni = CONVERT(Datetime, @DataIni, 120)
	SET @DtAuxFin = CONVERT(Datetime, @DataFin, 120)
	SET @DtAuxAtu = @DtAuxIni

	--Enquanto a data Atual for menor que a data Final
	WHILE (@DtAuxAtu <= @DtAuxFin) BEGIN
		INSERT INTO @TabDados VALUES (@DtAuxAtu, REPLACE(LEFT(CONVERT(VARCHAR, @DtAuxAtu, 120), 10), '-', ''))
		Set @DtAuxAtu = DATEADD(Day, 1, @DtAuxAtu)
	END

	--Seleciona todos os dados da tabela
	SELECT * FROM @TabDados
END
GO

Bom pessoal, por hoje é só.
Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Wagner Neves disse:

    Dan tudo bem
    Você teria uma função que ao informar o número da Semana, me retorne a data de inicio da Semana e a Data Fim dessa semana ? Por exemplo, ao informar a semana 44, me traga as datas 25/10/2020 e 31/10/2020.
    Obrigado
    Wagner Neves

Deixe uma resposta

Terminal de Informação