Listar datas de um período determinado Firebird
25/05/2022
0
Bom dia!
estou precisando fazer um select da seguinte forma: Vou passar uma data inicial exemplo 01/02/2022, e uma data final exemplo 30/04/2022, e preciso que o select me retorne todos os dias dentro desse período, assim:
01/02/2022
02/02/2022
03/02/2022
...
...
30/04/2022
pensei em fazer um select pegando a a data final e ir subtraindo 1 até chegar na data inicial mas quando o período incluir Fevereiro não vai funcionar pois não vou ter como saber se ele teve 28 ou 29 dias. Não possuo nenhuma tabela que guarde essas datas que quero selecionar, as únicas datas que terei acesso serão a de inicio e fim. Procurei e vi vários fóruns com a mesma duvida que eu mas em nenhum houve um solução.
Desde já agradeço.
estou precisando fazer um select da seguinte forma: Vou passar uma data inicial exemplo 01/02/2022, e uma data final exemplo 30/04/2022, e preciso que o select me retorne todos os dias dentro desse período, assim:
01/02/2022
02/02/2022
03/02/2022
...
...
30/04/2022
pensei em fazer um select pegando a a data final e ir subtraindo 1 até chegar na data inicial mas quando o período incluir Fevereiro não vai funcionar pois não vou ter como saber se ele teve 28 ou 29 dias. Não possuo nenhuma tabela que guarde essas datas que quero selecionar, as únicas datas que terei acesso serão a de inicio e fim. Procurei e vi vários fóruns com a mesma duvida que eu mas em nenhum houve um solução.
Desde já agradeço.
Francisco Vitor
Curtir tópico
+ 0
Responder
Post mais votado
25/05/2022
exatamente como o Francisco Vitor publicou.
Apenas troque as datas por parâmetros.
Apenas troque as datas por parâmetros.
with recursive dt as ( select cast(:dataini as date) as dt from rdb$database union all select dt.dt + 1 from dt where dt < cast(:datafim as date) ) select dt.dt from dt
Emerson Nascimento
Responder
Mais Posts
25/05/2022
Francisco Vitor
Bom dia!
estou precisando fazer um select da seguinte forma: Vou passar uma data inicial exemplo 01/02/2022, e uma data final exemplo 30/04/2022, e preciso que o select me retorne todos os dias dentro desse período, assim:
01/02/2022
02/02/2022
03/02/2022
...
...
30/04/2022
pensei em fazer um select pegando a a data final e ir subtraindo 1 até chegar na data inicial mas quando o período incluir Fevereiro não vai funcionar pois não vou ter como saber se ele teve 28 ou 29 dias. Não possuo nenhuma tabela que guarde essas datas que quero selecionar, as únicas datas que terei acesso serão a de inicio e fim. Procurei e vi vários fóruns com a mesma duvida que eu mas em nenhum houve um solução.
Desde já agradeço.
estou precisando fazer um select da seguinte forma: Vou passar uma data inicial exemplo 01/02/2022, e uma data final exemplo 30/04/2022, e preciso que o select me retorne todos os dias dentro desse período, assim:
01/02/2022
02/02/2022
03/02/2022
...
...
30/04/2022
pensei em fazer um select pegando a a data final e ir subtraindo 1 até chegar na data inicial mas quando o período incluir Fevereiro não vai funcionar pois não vou ter como saber se ele teve 28 ou 29 dias. Não possuo nenhuma tabela que guarde essas datas que quero selecionar, as únicas datas que terei acesso serão a de inicio e fim. Procurei e vi vários fóruns com a mesma duvida que eu mas em nenhum houve um solução.
Desde já agradeço.
Encontrei aqui a solução:
with recursive dt as (
select cast('2021-02-01' as date) as dt
from rdb$database
union all
select dt.dt + 1
from dt
where dt < cast('2021-03-31' as date)) select dt.dt from dt
esse sql está reconhecendo se for bissexto então é perfeito para não se preocupar com fevereiro.
estou usando Firebird 2.5 e testando o comando sql no IBExpert.
Responder
Clique aqui para fazer login e interagir na Comunidade :)