日期大于给定日期查询的Rails

时间:2011-09-26 01:30:09

标签: sql ruby-on-rails-3

尝试搜索出现的电影的发布日期大于今天的日期

 Movie.where('release > ?', Date.today)
ActiveRecord::StatementInvalid: Mysql::ParseError: You have an error in your SQL     syntax;    check the manual that corresponds to your MySQL server version for the right syntax to use near 'release > '2011-09-25')' at line 1: SELECT `movies`.* FROM `movies` WHERE (release > '2011-09-25')

4 个答案:

答案 0 :(得分:86)

尝试Movie.where(['release > ?', DateTime.now])


或者在Rails 3+中:Movie.where('release > ?', DateTime.now)

答案 1 :(得分:10)

更新

Rails核心团队决定暂时撤消此更改,以便对其进行详细讨论。有关更多信息,请参见this commentthis PR

我仅出于教育目的而保留答案。


用于在Rails 6.1中进行比较的新“语法”(已还原)

Movie.where('release >': DateTime.now)

这里是a link to PR,您可以在其中找到更多示例。

答案 2 :(得分:5)

在最新版本的rails中,您可以执行以下操作:

User.where(created_at: 3.days.ago..Time.now)

在此处查看其他示例:https://stackoverflow.com/a/24150094

答案 3 :(得分:0)

在 Ruby 2.7 中,你可以试试这个:

License.where(expiration: Time.zone.today..)
SELECT "licenses".* FROM "licenses" WHERE "licenses"."expiration" >= '2021-07-06 15:12:05'