私は2つの日付の日付の検索が正しく機能していないようです。日付の使用が適切に行われていません。
検索モデルでcreated_atの日付を次のように検索しています。私は、例えばだけ日からを入力した場合、私はFROM_DATEとTO_DATE
のフィールドを持つ形状を有するようto_date
とto_date + 1.day
としてto_date - 1.day
のバリエーションのカップルを試み
# -------------------------- Begin created at dates ----------------------------
# Only one date is filled in:
documents = documents.where("documents.created_at >= ?", from_date) if from_date.present? and not to_date.present?
documents = documents.where("documents.created_at <= ?", to_date - 1.day) if to_date.present? and not from_date.present?
# Both Dates are filled in
documents = documents.where("documents.created_at >= ?", from_date,) if from_date.present? and to_date.present?
documents = documents.where("documents.created_at <= ?", to_date) if to_date.present? and from_date.present?
注03/24/15、私は期待していたすべてのアイテムを手に入れます。
2016-03-24
id Subject Category Author Date Created Date Updated
32 Test Of Dates Test Christopher Mendla 03/24/16 16:45 03/24/16 16:45 Edit
33 Friday Test Christopher Mendla 03/25/16 09:21 03/25/16 09:21
IOW、期待どおりに動作します。
ただし、to_dateを03/25/16に設定すると、3/25/16に作成されたレコード以外のすべてのレコードが取得されます。 03/26/16のto_dateを検索すると、created_atが3/25/16のレコードが含まれます。
私はapplication.rbに以下を追加しましたが、この問題はタイムゾーンを設定する前に存在していたことに注意してください(データがUTC以外のものは問題を引き起こす可能性がありますが、 SQLから報告する。)
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = 'Eastern Time (US & Canada)'
私は解決策に近づいていますされていることを信じているからから日付としてキャストを使用していませんでした。 'created_at <= '2016-03-25'を検索すると03/25/16に作成されたレコードは表示されないようです。私は、 'cast([created_at] as date) '=' 2016-03-25 ''を使用してdbの日付だけを見るのではなく、時間を調べるための情報を見つけました。 –