簡體   English   中英

Ruby on Rails:查詢日期等於另一個日期(忽略時間)

[英]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 
  • user.birthday_date當然是一個日期時間

我試過了

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.

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