Pegar o período de Data inicial Data final

Bom dia pessoal, estou fazendo uma procedure aonde eu tenho que pegar um intervalo entre data de inicial e final de todo o período do calendário, porém ela passa os valores dos intervalos das datas fixos no parâmetro da query.

declare @id_calendar numeric(9),
		@data_inicio varchar(8),
		@data_fim varchar(8),
		@data smalldatetime,
		@id_day numeric(9),
		@id_week smallint,
		@id_period numeric(9),
		@n_week smallint,
		@c_week smallint
-----------------------------------------------------------
--SETANDO PARÂMETROS
set @id_calendar = 1
--neste calendário, domingo é o primeiro dia da semana
SET DATEFIRST 7
set @data_inicio = '20100110'
set @data_fim = '20210125'
-----------------------------------------------------------
set @id_day = 1
set @id_week = 1

1º - Passo - Estou com dúvida de como fazer em t-sql, eu não queria que fossem fixo os valores set @data_inicio = ‘20100110’
set @data_fim = ‘20210125’ , ao invés de pegar um valor fixo e passar no parâmetro query, ele pegasse o valor desse intervalo das datas de inicio e fim de acordo com a coluna GREGORIAN_DATE na tabela dos calendários.

2º - Passo - Quando esse limite da data final chegasse ao fim, ele passasse a data final para o inicial e o parâmetro de data final receber um novo período final.

Luiz não sei como funciona o calculo entre dados no mysql mas, se vc fizer uma conexão do banco com java por exemplo vc poderia converter essas datas em string trabalhar com elas transformandoas em int/float e voltar para string para coloca-las novamente no seu banco. De maneria prévia aviso q data é uma das coisas mais complexas de se trabalhar.

1 curtida

O @hugokotsubo escreveu um livro sobre datas x programação.

2 curtidas

Nesse caso bastaria fazer algo como:

SELECT
  @data_inicio = coluna_dt_inicio,
  @data_fim = coluna_dt_fim
FROM tabela WHERE etc...

Não ficou claro para mim a lógica de ficar mudando as datas, mas basta ajustar a query para que ela retorne os valores que você precisa.

3 curtidas