6

created_at現在の日付に最も近い日付を持つレコードを取得したいと思います。whereアクティブなレコードの句でこれを行うにはどうすればよいですか?

4

1 に答える 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 に答える