簡體   English   中英

如何在Rails 4.2和sqlite中按星期幾來過濾?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM