created_at
現在の日付に最も近い日付を持つレコードを取得したいと思います。where
アクティブなレコードの句でこれを行うにはどうすればよいですか?
4555 次
1 に答える
11
次のようなものを使用して、過去に最も近いレコードを見つけることができます。
Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1)
同様に、将来的に最も近い記録を持つことができます
Record.where("created_at >= ?", Date.today).order_by("created_at ASC").limit(1)
そして、どちらが現在の日付に最も近いかを比較します...
単一の要求でそれを行う解決策があるかもしれませんが、その方法を見つけることができませんでした (SQL サーバーを使用している場合は、DATEDIFF メソッドが役立ちます)。
更新:ミーシャに感謝
すべてが過去のものであると確信している場合はcreated_at
、最後に作成されたレコードを探しています。
Record.order("created_at").last
アップデート
最後のレコードと同じ日付に作成されたすべてのレコードを取得するには:
last_record_date = Record.max(:created_at)
Record.where(:created_at => (last_record_date.at_beginning_of_day)..(last_record_date.end_of_day))
于 2012-09-06T07:12:04.973 に答える