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

Rails `where` за време по-малко от заявки

Редактиране 2 5/9/20

Ако използвате Ruby 2.6, можете да направите това с безкрайни диапазони, а в Ruby 2.7 можете да използвате диапазони без начало.

Напр.:

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

генерира

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

и

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

генерира

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

Редактиране

Това вече е възможно в Rails 5!

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

ще генерира SQL

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

Оригинален (и Rails <5) отговор

Не изглежда така, сякаш има начин да се използва основно where хеш синтаксис за генериране на заявка по-голямо или по-малко от за времеви печати. Най-простият и най-четлив начин е описан в моя въпрос под Current Simple Solution .

Друг начин да го направите използва ARel, но трябва да правите някои по-рядко срещани обаждания. Първо можете да получите манипулатор на таблицата ARel на AR класа, да получите достъп до колоната, да предадете резултата от по-голямото от gt , по-голямо или равно на gteq , по-малко от lt и/или по-малко или равно на lteq метод с аргумент за where .

В горната ситуация това би било направено така:

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. AJAX актуализира MYSQL база данни, използвайки функция, извикана от HTML, генериран от PHP

  2. MySQL, Проверете дали съществува колона в таблица с SQL

  3. Неизвестна колона в клауза Къде

  4. Множество заявки, изпълнени в Java в един израз

  5. Предайте параметрите на MySQL скрипта