Rails在时间比较中不起作用

时间:2013-03-07 06:11:33

标签: sql ruby-on-rails-3 time where

这个查询有些奇怪,我无法解决

我有一个帖子模型,其中有很多评论。我想获取过去24小时内的评论

p=Post.first

 p.comments.where("(:t - comments.created_at) <= :d", t: Time.now, d: 1.day)
  Comment Load (1.0ms)  SELECT "comments".* FROM "comments" WHERE "comments"."commentable_id" = 76 AND "comments"."commentable_type" = 'Post' AND (('2013-03-07 06:08:09.045488' - comments.created_at) <= 86400) ORDER BY created_at DESC

然而,尽管如此,这并没有给我任何东西 p.comments

[#<Comment id: 132, title: "", comment: "comment", commentable_id: 76, commentable_type: "Post", user_id: 1, created_at: "2013-03-07 05:43:37", updated_at: "2013-03-07 05:43:37">]

为什么?

3 个答案:

答案 0 :(得分:3)

比较日期比使用created_at

减去当前日期更有意义
p.comments.where("comments.created_at > ?", 1.day.ago)

答案 1 :(得分:2)

p.comments.where(:created_at => 1.day.ago..Time.now)

这会对你有所帮助。它会在这些时间之间获取所有评论。

答案 2 :(得分:1)

试试这个,

 p.comments.where("(created_at >= :t1) and (created_at < :t2)" , t1: (Time.now - 1.day).beginning_of_day, t2: (Time.now - 1.day).end_of_day)