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

Truy vấn postgresql giữa các phạm vi ngày

Với ngày (và giờ), nhiều thứ trở nên đơn giản hơn nếu bạn sử dụng >= start AND < end .

Ví dụ:

SELECT
  user_id
FROM
  user_logs
WHERE
      login_date >= '2014-02-01'
  AND login_date <  '2014-03-01'

Trong trường hợp này, bạn vẫn cần phải tính toán ngày bắt đầu của tháng bạn cần, nhưng điều đó phải được tính thẳng theo bất kỳ cách nào.

Ngày kết thúc cũng được đơn giản hóa; chỉ cần thêm đúng một tháng. Không có vấn đề gì với 28, 30, 31, v.v.


Cấu trúc này cũng có lợi thế là có thể duy trì việc sử dụng các chỉ mục.


Nhiều người có thể đề xuất một biểu mẫu như sau, nhưng họ không sử dụng các chỉ mục:

WHERE
      DATEPART('year',  login_date) = 2014
  AND DATEPART('month', login_date) = 2

Điều này liên quan đến việc tính toán các điều kiện cho mọi hàng đơn lẻ trong bảng (quét) và không sử dụng chỉ mục để tìm phạm vi các hàng sẽ khớp (tìm kiếm phạm vi).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo mật khẩu người dùng postgresql

  2. Các biến do người dùng xác định trong PostgreSQL

  3. Tổng quan về các công cụ sơ đồ cơ sở dữ liệu có sẵn cho PostgreSQL

  4. Cách timeofday () hoạt động trong PostgreSQL

  5. Làm cách nào để thay đổi lược đồ của nhiều bảng PostgreSQL trong một thao tác?