4
我想獲取最接近當前日期的日期爲created_at
的記錄。我如何通過活動記錄'where
條款來做到這一點?查找最接近當前日期創建的記錄
我想獲取最接近當前日期的日期爲created_at
的記錄。我如何通過活動記錄'where
條款來做到這一點?查找最接近當前日期創建的記錄
您可以用類似發現,在過去的最近戰績:
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可以h ELP)。
更新:由於米沙
如果您確信所有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))
理論上,將來可能會有'created_date',但如果您使用Rails的自動時間戳,則不會發生這種情況。所以你可以忽略'where'子句。使用'order_by(「created_at DESC」)'應該足夠了。 – Mischa
@米沙你真是太棒了!我已經寫了答案,認爲它可以是任何日期,並且當我再次閱讀問題時將其更改爲'created_at',而不用考慮簡化解決方案。謝謝。 – Baldrick
謝謝Baldrick我想要得到最接近今天日期的記錄,不是對它們進行排序,而是對它們進行過濾。所以,沿着MIN(Date(created_at) - Date.today)這一行。明白我的意思了嗎? – chell