私の問題は、ユーザーが同じ日付を選択したとき、下のクエリが空の配列を返すことです。代わりに、ユーザーが同じ日付を選択した場合、その日付に作成されたユーザーを表示する必要があります。どんな助けもありがとう。同じ日付の日付比較
User.where("created_at >= ? and created_at =< ?", params[:from].to_date, params[:to].to_date)
私の問題は、ユーザーが同じ日付を選択したとき、下のクエリが空の配列を返すことです。代わりに、ユーザーが同じ日付を選択した場合、その日付に作成されたユーザーを表示する必要があります。どんな助けもありがとう。同じ日付の日付比較
User.where("created_at >= ? and created_at =< ?", params[:from].to_date, params[:to].to_date)
おそらくDATETIMEデータベース列を使用しています。問題は、ユーザが(例えば)2011-07-09として「from」を選択し、比較のためにデータベースが「2011-07-09 00:00:00」に変換し、ユーザが同じ日を2回選択した場合おそらく "2011-07-09 00:00:00"に正確に作成されていない限り、結果は表示されません。これを修正するには、実際のデータベース検索呼び出しを行う前に
to_date = params[to].to_date + 1.day
を実行してください。そして、TO_DATEの代わりのparamsを使用し[:へ] .to_date
ありがとうございます。分かりました。 – Zyn
答えがあなたのために働くならば、それを正解としてマークしてください。人々はそれを感謝し、将来あなたを援助する意欲があります。 –
この達成するための別の方法:
のparams [:から] とのparams .to_date.beginning_of_day:.to_date.end_of_day [へ]を。これは1日全体をカバーします
2つの日付が同一かどうかテストできます。そうであれば、時刻を追加して0時から23時59分の間に結果を得ることができます。時刻を使用したくない場合は、日付が同じ場合にクエリを変更して、日付が昨日(日付-1)より大きく、明日(日付+ 1)よりも小さいレコードを見つけることができます。 – DOK