[英]Ruby on Rails: Query where date equals another date (ignoring time)
我正在嘗試在我的模型上執行此查詢,但我無法弄明白。
我有一個名為“array_of_dates”的日期數組,我是從另一個模型構建的:
array_of_dates = [] user.each do |user| array_of_dates << user.birthday_date end
我試過了
Event.where("date in (?)", array_of_dates)
但是,來自Event的日期也有一個時間設置。 我想忽略這里設定的時間,因為我只是在尋找這一天。 我嘗試將user.birthday_date解析為另一種格式,但我不知道如何從Event模型更改“date”的格式。
謝謝您的幫助!
使用日期功能:
# if user's birthday_date column is date
Event.where("date(date) in (?)", User.pluck(:birthday_date))
# if user's birthday_date column is timestamp
Event.where("date(date) in (?)", User.select("date(birthday_date)"))
首先通過將每個日期轉換為涵蓋整天的范圍來轉換array_of_dates
日期:
array_of_dates = array_of_dates.map {|date| date.beginning_of_day..date.end_of_day}
這會將每個日期轉換為范圍,例如(Mon 27 Oct 2014 00:00:00..Mon 27 Oct 2014 23:59:59)
現在使用以下查詢格式來查找事件:
Event.where(date: array_of_dates)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.