PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Masalah dengan kueri rekaman aktif dan heroku.

Anda harus menggunakan placeholder untuk mendapatkan format yang tepat dan memastikan bahwa itu dikutip dengan benar:

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

Anda tidak dapat membandingkan timestamp kolom dengan integer di PostgreSQL tetapi Anda bisa di SQLite. Anda harus membandingkan timestamp dengan timestamp lainnya (atau date ) atau string yang dapat diuraikan sebagai timestamp . SQL ini tidak akan berfungsi:

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

tapi ini akan:

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

Ada beberapa pelajaran di sini:

  1. Anda juga harus mulai mengembangkan di atas PostgreSQL jika Anda akan menerapkan Heroku, ActiveRecord tidak akan melindungi Anda dari semua perbedaan antara berbagai database.
  2. Anda harus membiarkan ActiveRecord khawatir tentang masalah konversi jenis sebanyak mungkin, jika Anda membandingkan dengan tanggal atau waktu, gunakan placeholder dan berikan AR objek waktu dari beberapa jenis dan biarkan AR khawatir tentang hal itu.
  3. Gunakan placeholder alih-alih interpolasi string jika memungkinkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat mengakses metode instance Sequelize

  2. Dapatkan interval waktu total dari beberapa baris jika urutan tidak rusak

  3. Setara group_concat di postgresql 8.2.11

  4. Bagaimana cara beralih antara operasi yang diindeks dan tidak diindeks tergantung pada input?

  5. Fungsi jendela SQL dengan klausa where?