我試圖檢查賦值的due_date(日期時間數據類型)是否等於Date.today。我需要幫助的邏輯是'due_date:Date.today'部分。提前致謝。檢查日期時間字段是否等於Date.today
@student_assignments = StudentAssignment.joins(:assignment).where(assignments: { due_date: Date.today })
我試圖檢查賦值的due_date(日期時間數據類型)是否等於Date.today。我需要幫助的邏輯是'due_date:Date.today'部分。提前致謝。檢查日期時間字段是否等於Date.today
@student_assignments = StudentAssignment.joins(:assignment).where(assignments: { due_date: Date.today })
.where("DATE(assignments.due_date) = ?", Date.today)
這裏是一個可能的解決方案:
{ due_date: (Date.today.beginning_of_day..Date.today.end_of_day) }
仍然不會有日期時間列 – max
工作今天,該聲明將產生以下SQL,它與日期時間列'BETWEEN'2015-05-26 00:00:00'AND'2015-05-26 23:59:59'' – jazzytomato
一起工作啊,我是那麼錯了。抱歉。 – max
不同,需要有一個DateTime對象日期時間列比較。但是,如果您將權益與DateTime.now.beginning_of_day
進行比較,那麼它只會與00:00
的分配相匹配。
相反,如果你想assigments今天到期,你可以這樣做:
StudentAssignment.joins(:assignment)
.where(assignments: {
due_date: DateTime.now.beginning_of_day..DateTime.now.end_of_day
})
您可以創建一個名爲範圍:
class Assignment < ActiveRecord::Base
scope(:due_today) -> {
where(due_date:DateTime.now.beginning_of_day..DateTime.now.end_of_day)
}
end
這將不適用於每個DBMS – jazzytomato
@ThomasHaratyk這是正確的,我只是查找mysql變體,但這應該在postgres中工作。 – zwippie
後續問題:下週如何獲得due_dates? – maclover7