PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Consulta SQL para pesquisar por dia/mês/ano/dia&mês/dia&ano etc


Você pode escrever consultas de manutenção que também são rápidas usando a extensão pg/temporal:

https://github.com/jeff-davis/PostgreSQL-Temporal
create index on events using gist(period(start_date, end_date));

select *
from events
where period(start_date, end_date) @> :date;

select *
from events
where period(start_date, end_date) && period(:start, :end);

Você pode até usá-lo para não permitir sobreposições como uma restrição de tabela:
alter table events
add constraint overlap_excl
exclude using gist(period(start_date, end_date) WITH &&);

Na verdade, é mais sustentável do que você imagina, por exemplo:
select *
from events
join generate_series(:start_date, :end_date, :interval) as datetime
on start_date <= datetime and datetime < end_date;

Mas é muito melhor usar o tipo de período mencionado acima.