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

Triển khai các ngày bị chặn cho mô hình ORM sự kiện người dùng

Đây là giải pháp tôi đã chọn. Thủ thuật là sử dụng left outer join (lệnh ruby ​​wish_load) cho người dùng và bảng ngày tháng bị chặn, và bao gồm cả những người dùng có trường ngày tháng bắt đầu trong bảng đã kết hợp là NULL, rõ ràng là vì họ không có bất kỳ đối tượng ngày tháng bị chặn nào được liên kết với chính họ. Truy vấn tôi sử dụng:

User.eager_load(:blocked_date_periods).
  where("blocked_date_periods.start_date is null OR 
    not tsrange(
      blocked_date_periods.start_date - '00:59:59'::interval,
      blocked_date_periods.end_date + '00:59:59'::interval
    ) @> ?::timestamp", 
  Date.parse(DATE_STRING)).count

Tôi đã phải cộng và trừ 1 giờ kể từ ngày bắt đầu và ngày kết thúc vì truy vấn không muốn bao gồm ngày kết thúc chính xác vì lý do nào đó, do đó, ngày 12-26-2015 không được bao gồm trong khoảng thời gian từ ngày 22-12-2015 tới Ngày 16 tháng 12 năm 2015 vì một số lý do tôi vẫn chưa hiểu.

Vì một số lý do, tôi không thích giải pháp đó và muốn biết liệu có truy vấn nào tốt hơn và nhanh hơn những gì tôi có.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các hợp tác mạnh mẽ hơn với hỗ trợ ICU trong PostgreSQL 10

  2. PgAdmin trên Windows 10 với Postgres khi được cài đặt qua Bash trên Ubuntu trên Windows

  3. Làm cách nào để truyền một bản ghi làm tham số cho hàm PL / pgSQL?

  4. Cách sử dụng cùng một giá trị nhiều lần trong câu lệnh được soạn sẵn trong jdbc postgresql

  5. Tổng quan về Tham số kết nối sslpassword của PostgreSQL 13 libpq