2008/12/15, Rogério A Bassete <[email protected]>:
> Pessoal,
>
> dados da tabela vigencia:
>
> Data_Inicial       Data_Final
> 01/11/2008         03/11/2008
> 04/11/2008         30/11/2008
> 01/12/2008         03/12/2008
> 05/12/2008         31/12/2008
>
>
> Gostaria de um select que me retorna true caso o intervalo pesquisado
> seja: 01/11/2008 a 30/11/2008 e false caso o intervalo seja 01/12/2008 a
> 31/12/2008 (falta o dia 04/12/2008).
>


Uma idéia é utilizar a função generate_series [1] para duas coisas:
1. gerar todas as datas do intervalo fornecido,
2. criar uma tabela temporária com todas as datas de cada uma das
tuplas de sua tabela onde a Data_Inicial seja >= o início de seu
intervalo e a Data_Final seja <= ao fim de seu intervalo.

Verifique quais datas do intervalo fornecido não estão em sua tabela
temporária (por ex. com um LEFT OUTER JOIN e NULL nas datas geradas a
partir de sua tabela).
Se não retornar nenhuma tupla então "não existem buracos".

Osvaldo

[1] http://www.postgresql.org/docs/current/interactive/functions-srf.html
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a