4

私は 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)
4

1 に答える 1

6

DATE() でこれを試してください...

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

これを見る

于 2013-08-22T12:43:16.640 に答える