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

Chọn bản ghi giữa hai dấu thời gian

Có gì sai với:

SELECT a,b,c
FROM   table
WHERE  xtime BETWEEN '2012-04-01 23:55:00'::timestamp
                 AND now()::timestamp;

Nếu bạn muốn hoạt động với số giây là interval :

...
WHERE  xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
                 AND now()::timestamp;

Lưu ý, cách tôi sử dụng định dạng ngày tiêu chuẩn ISO 8601 YYYY-MM-DD h24:mi:ss rõ ràng với bất kỳ ngôn ngữ nào hoặc DateStyle cài đặt.

Cũng lưu ý rằng giá trị đầu tiên của BETWEEN cấu trúc phải là cấu trúc nhỏ hơn. Nếu bạn không biết giá trị nào nhỏ hơn, hãy sử dụng BETWEEN SYMMETRIC thay vào đó.

Trong câu hỏi của bạn, bạn tham khảo loại datetime timestamp dưới dạng "ngày", "thời gian" và "khoảng thời gian". Trong tiêu đề, bạn đã sử dụng thuật ngữ "khung thời gian", tôi đã đổi nó thành "dấu thời gian". Tất cả các điều khoản này đều sai. Tự do thay đổi chúng khiến câu hỏi càng khó hiểu hơn.

Điều đó và thực tế là bạn chỉ gắn thẻ câu hỏi psql (vấn đề hầu như không liên quan đến thiết bị đầu cuối dòng lệnh) có thể giúp giải thích tại sao không ai trả lời trong nhiều ngày. Thông thường, đó là vấn đề vài phút xung quanh đây. Tôi đã rất khó hiểu câu hỏi của bạn, đã phải đọc nó một vài lần.

Bạn cần hiểu các loại dữ liệu date , interval , timetimestamp - có hoặc không có múi giờ. Bắt đầu bằng cách đọc chương "Loại ngày / giờ" trong sách hướng dẫn này .

Thông báo lỗi cũng sẽ xuất hiện trong một thời gian dài.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHÈN POSTGRESQL nếu tên hàng cụ thể không tồn tại?

  2. Tổng hợp tất cả các giá trị không trong cùng một nhóm

  3. Thêm khóa chính nhiều cột vào bảng có 40 triệu bản ghi

  4. RANGE PRECEDING chỉ được hỗ trợ với UNBOUNDED

  5. WhereRaw Laravel với biến