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

Vấn đề với truy vấn bản ghi đang hoạt động và heroku.

Bạn nên sử dụng trình giữ chỗ để có định dạng phù hợp và đảm bảo rằng nó được trích dẫn chính xác:

t      = Time.new
events = Event.where("datetime < :t", :t => t)

Bạn không thể so sánh timestamp cột với một số nguyên trong PostgreSQL nhưng bạn có thể trong SQLite. Bạn phải so sánh timestamp của mình với timestamp khác (hoặc date ) hoặc một chuỗi có thể được phân tích cú pháp dưới dạng timestamp . SQL này sẽ không hoạt động:

SELECT "events".* FROM "events" WHERE (datetime < 132462148)

nhưng những điều này sẽ:

SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23 06:52:25.096869')
SELECT "events".* FROM "events" WHERE (datetime < '2011-12-23')

Có một số bài học ở đây:

  1. Bạn cũng nên bắt đầu phát triển trên PostgreSQL nếu bạn sắp triển khai Heroku, ActiveRecord sẽ không cách ly bạn khỏi tất cả sự khác biệt giữa các cơ sở dữ liệu khác nhau.
  2. Bạn nên để ActiveRecord lo lắng về các vấn đề chuyển đổi kiểu càng nhiều càng tốt, nếu bạn đang so sánh với ngày hoặc giờ, hãy sử dụng trình giữ chỗ và giao cho AR một đối tượng thời gian thuộc một số loại và để AR lo về điều đó.
  3. Sử dụng trình giữ chỗ thay vì nội suy chuỗi nếu có thể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL làm cách nào để tạo một bản sao của cơ sở dữ liệu hoặc lược đồ?

  2. Tìm các bản sao có thể có trong hai cột bỏ qua chữ hoa và các ký tự đặc biệt

  3. Tổng hợp các nhóm nút / cạnh được kết nối

  4. Sự khác biệt về thứ tự các ký tự kiểu enum giữa PostgreSQL 9.0 và 9.1

  5. gitlab Lỗi 500 sau khi cập nhật khi xem các dự án