PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Permintaan SQL untuk mencari berdasarkan hari/bulan/tahun/hari&bulan/hari&tahun dll

Anda dapat menulis kueri yang dapat dikelola yang juga cepat dengan menggunakan ekstensi 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);

Anda bahkan dapat menggunakannya untuk melarang tumpang tindih sebagai batasan tabel:

alter table events
add constraint overlap_excl
exclude using gist(period(start_date, end_date) WITH &&);

Ini sebenarnya lebih dapat dipelihara daripada yang Anda kira, mis.:

select *
from events
join generate_series(:start_date, :end_date, :interval) as datetime
on start_date <= datetime and datetime < end_date;

Tetapi jauh lebih baik menggunakan jenis periode yang disebutkan di atas.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ciutkan beberapa baris array jika array tumpang tindih

  2. Postgres Buat Tampilan Dengan Fungsi Jenis Rekaman

  3. Daftar jumlah nilai duplikat

  4. masalah menjalankan liquibase dengan maven dan postgres-db

  5. SQL bergabung dengan tanggal terakhir