有效记录,结果图

时间:2016-09-15 15:19:02

标签: ruby-on-rails activerecord

有人可以解释一下吗?

Post.where(:p_date => ((Time.now - 7.days)..(Time.now))).count
-> 4507
Post.where(:p_date => ((Time.now - 7.days).beginning_of_day..(Time.now).end_of_day)).count
-> 4794

虽然 p_date 只是 日期类型 ,但没有时间。

谢谢

1 个答案:

答案 0 :(得分:1)

如果p_date是日期列,请将日期传递到您的查询

Post.where(p_date: (7.day.ago.to_date .. Date.today)).count

使用此查询

SELECT COUNT(*) FROM `posts` WHERE (`posts`.`p_date` BETWEEN '2016-09-08' AND '2016-09-15')

如果您传入时间对象,数据库将自动与0:00:00时间(至少在mysql和postgres上)进行比较,这是您不同意的地方。