Minha pergunta é semelhante a https://stackoverflow.com/a/41267928/2585154 , mas no meu caso preciso dividir/dividir o intervalo de datas por vários intervalos de datas, não apenas um.
No meu caso também é garantido que os "intervalos de datas a serem divididos" não se sobreponham uns aos outros.
Exemplo 1:
Período a ser dividido: 2021-01-01 2021-12-31
Períodos a serem divididos por (1):
- 01-03-2021 02-06-2021
Eu quero obter a seguinte saída:
- 2021-01-01 2021-02-28
- 03-06-2021 31-12-2021
Exemplo 2:
Período a ser dividido: 2021-01-01 2021-12-31
Períodos a serem divididos por (2):
- 01-03-2021 02-06-2021
- 01-07-2021 30-12-2021
Eu quero obter a seguinte saída:
- 2021-01-01 2021-02-28
- 2021-06-03 2021-06-30
- 31-12-2021 31-12-2021
Os novos tipos de dados multirange no Postgres 14 são exatamente o que você precisa.
Os operadores de vários intervalos permitem dividir um intervalo de datas.
As notas de lançamento do Postgres 14:
Exemplo 1:
Exemplo 2:
db<>fique aqui
Estou usando literais multirange ( constantes ) no meu exemplo.
O manual sobre como construir multiranges.
Observe que
[2021-01-01,2022-01-01)
e[2021-01-01,2021-12-31]
são duas variantes de sintaxe equivalentes para os mesmos intervalos de datas. A primeira variante é a forma canônica . O manual: