PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn SQL để tìm kiếm theo ngày / tháng / năm / ngày &tháng / ngày &năm, v.v.

Bạn có thể viết các truy vấn có thể bảo trì được nhanh chóng bằng cách sử dụng phần mở rộng 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);

Bạn thậm chí có thể sử dụng nó để không cho phép chồng chéo làm ràng buộc bảng:

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

Nó thực sự dễ bảo trì hơn bạn có thể nghĩ, ví dụ:

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

Nhưng sẽ tốt hơn nhiều nếu sử dụng kiểu khoảng thời gian được đề cập ở trên.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi 'Chứng chỉ tự ký' trong khi truy vấn cơ sở dữ liệu Postgres được lưu trữ trên Heroku từ ứng dụng Node.js

  2. Chuyển nhiều bộ hoặc mảng giá trị cho một hàm

  3. Nhận dữ liệu mới nhất duy nhất từ ​​tuần trước và tổng hợp một số cột

  4. PostgreSQL tạo một cột mới với các giá trị được điều chỉnh trên các cột khác

  5. Trình tự PostgreSQL đảm bảo một ID duy nhất