2013-08-22 22 views
0

我正在开发一个Rails 3.2 web应用程序,并且在这个应用程序中,我收到了一个查询,查找所有创建超过2周前的帐户,并在特定日期(1个月前完全)付款。 问题是即使日期正确,我的查询也没有找到任何东西。我认为这与时间有关。我如何忽略查询中的时间并只使用日期?如何仅查询日期,而不是时间?

created_at = Time.now - 2.weeks 
paid_at = Time.now - 1.month 

Account.where(["created_at >= ? AND paid_at = ?", created_at.beginning_of_day, paid_at.beginning_of_day]).select(:id) 

我也试图与相同的结果:

Account.where(["created_at >= ? AND paid_at = ?", 2.weeks.ago, 1.month.ago]).select(:id) 

我想我在这里以正确的方式,但我需要使用created_at部分也是一样,它似乎在此查询被忽略:

Account.where('created_at > ? AND paid_at BETWEEN ? AND ?', 2.years.ago, 1.month.ago.beginning_of_day, 1.month.ago.end_of_day) 

回答

1

尝试对DATE()...

Account.where("DATE(created_at) >= ? AND DATE(paid_at) = ?", created_at, paid_at).select(:id) 

see this

相关问题