Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Rails `where` untuk waktu kurang dari kueri

Edit 2 5/9/20

Jika Anda menggunakan Ruby 2.6, Anda dapat melakukannya dengan rentang tanpa akhir dan di Ruby 2.7 Anda dapat menggunakan rentang tanpa awal.

Mis.:

# Ruby >= 2.6
User.where(last_deposit: 10.days.ago..)

menghasilkan

SELECT "users".* FROM "users" WHERE "user"."last_deposit" >= '2020-04-29 21:58:39.109419'"

dan

# Ruby >= 2.7
User.where(last_deposit: ..10.days.ago)

menghasilkan

SELECT "users".* FROM "users" WHERE "users"."last_deposit" <= '2020-04-29 22:01:05.582055'

Sunting

Ini sekarang dimungkinkan di Rails 5!

User.where(last_deposit: 10.days.ago..DateTime::Infinity.new)

akan menghasilkan SQL

SELECT `users`.* FROM `users` WHERE (`users`.`last_deposit` >= '2018-06-30 17:08:54.130085').

Asli (dan Rails <5) Jawaban

Tampaknya tidak ada cara untuk menggunakan where dasar sintaks hash untuk menghasilkan kueri cap waktu yang lebih besar atau lebih kecil dari kueri. Cara paling sederhana dan paling mudah dibaca diuraikan dalam pertanyaan saya di bawah Current Simple Solution .

Cara lain untuk melakukannya menggunakan ARel tetapi Anda harus melakukan beberapa panggilan yang jarang terlihat. Pertama, Anda bisa mendapatkan pegangan ke tabel ARel kelas AR, mengakses kolom, meneruskan hasil yang lebih besar dari gt , lebih besar dari atau sama dengan gteq , kurang dari lt , dan/atau kurang dari atau sama dengan lteq metode dengan argumen ke where .

Dalam situasi di atas ini akan dilakukan seperti:

last_deposit_column = User.arel_table[:last_deposit]
last_deposit_over_ten_days_ago = last_deposit_column.gteq(10.days.ago)
User.where(last_deposit_over_ten_days_ago)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa cara terbaik untuk menggunakan LEFT OUTER JOIN untuk memeriksa tidak adanya baris terkait

  2. Tabel basis data tidak ada menurut kompiler studio Android

  3. mysql kiri luar bergabung

  4. Alat sinkronisasi MySQL gratis

  5. MySQL JOIN dan COUNT dalam satu permintaan