[英]How to filter by day of week in Rails 4.2 and sqlite?
如何在每周的每一天檢索記錄?
這是我的范圍:
scope :day_of_week, ->(day_of_week) { where("created_at = ?", day_of_week ) }
我已經嘗試過strftime('%w',day_of_week)和DAYOFWEEK()但沒有成功。
我正在使用數月和數年沒有問題,我在計算我的觀點。 我也計算每周的項目,即使我沒有得到語法錯誤,我收到0。
date = DateTime.now
#=> Mon, 06 Apr 2015 20:02:00 +0200
date.strftime('%A')
#=> "Monday"
所以你必須檢查,如果created_at.strftime('%A')
等於你感興趣的day_of_week
。
scope :day_of_week, ->(day_of_week) { where("strftime('%w', created_at) = ?", day_of_week.to_s) }
是解決方案。 我不太清楚為什么.to_s
工作但似乎文檔不清楚。 如果我們認為strftime意味着“String to Time type”,那么它應該需要一個字符串。
如果有人堅持使用它, Radolino的回答是有效的,但是'%w'
返回你周日的ID,如下所示:
Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3, Thursday: 4, Friday: 5, Saturday: 6
但是rails方法Date::DAYS_INTO_WEEK
給你這個id:
Sunday: 6, Monday: 0, Tuesday: 1, Wednesday: 2, Thursday: 3, Friday: 4, Saturday: 5
所以你需要在過濾前檢查你的params
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.