PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Проблем с активно запитване за запис и heroku.

Трябва да използвате заместител за да получите правилния формат и да се уверите, че е правилно цитиран:

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

Не можете да сравнявате timestamp колона с цяло число в PostgreSQL, но можете в SQLite. Трябва да сравните своя timestamp с друго timestamp (или date ) или низ, който може да бъде анализиран като timestamp . Този SQL няма да работи:

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

но те ще:

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

Тук има няколко урока:

  1. Трябва също така да започнете да разработвате върху PostgreSQL, ако възнамерявате да внедрявате в Heroku, ActiveRecord няма да ви изолира от всички разлики между различните бази данни.
  2. Трябва да оставите ActiveRecord да се тревожи за проблемите с преобразуването на типове, доколкото е възможно, ако сравнявате с дата или час, използвайте контейнер и предайте на AR някакъв обект за време и оставете AR да се тревожи за това.
  3. Използвайте контейнери вместо интерполация на низове, когато е възможно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавяне на X часа - @Query - Spring Data JPA

  2. Как да съхранявам дати с различни нива на точност в postgres?

  3. Изхвърлете част от милисекундата от времевата марка

  4. Безопасно ли е да пренареждате колони в schema.rb за Rails 4/Postgres?

  5. Как да разграничим име на променлива plpgsql в клауза ON CONFLICT?