PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Problem z aktywnym odpytywaniem rekordów i heroku.

Powinieneś używać symbolu zastępczego aby uzyskać odpowiedni format i upewnić się, że jest prawidłowo cytowany:

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

Nie możesz porównać timestamp kolumna z liczbą całkowitą w PostgreSQL, ale możesz w SQLite. Musisz porównać swój timestamp z innym timestamp (lub date ) lub ciąg, który można przeanalizować jako timestamp . Ten kod SQL nie działa:

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

ale te będą:

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

Jest tu kilka lekcji:

  1. Powinieneś również zacząć programować na PostgreSQL, jeśli zamierzasz wdrażać w Heroku, ActiveRecord nie izoluje Cię od wszystkich różnic między różnymi bazami danych.
  2. Powinieneś pozwolić ActiveRecord zająć się problemami z konwersją typów tak bardzo, jak to możliwe, jeśli porównujesz z datą lub czasem, użyj symbolu zastępczego i przekaż AR jakiś obiekt czasu i pozwól AR się tym martwić.
  3. W miarę możliwości używaj symboli zastępczych zamiast interpolacji ciągów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć postgreSQL z psycopg2

  2. Dynamiczny audyt danych za pomocą wyzwalacza PostgreSQL

  3. Upuść kolumnę nie usuwa całkowicie odwołań do kolumn - postgresql

  4. Czy można skondensować klucz podstawowy/numer seryjny?

  5. Zwracanie wartości z MyBatis <wstaw> zmapowanych metod