如何以字符串格式搜索日期,但数据库中的值是整数示例December
,即12-1-2017。我想要返回12月份的所有日期
格式为12-1-2017
,但我在视图中将其输出为date.try(:strftime, "%B %d, %Y")
模型
scope :search_query, lambda { |query|
return nil if query.blank?
terms = query.downcase.split(/\s+/)
terms = terms.map { |e|
(e.gsub('*', '%') + '%').gsub(/%+/, '%')
}
num_or_conds = 2
where(
terms.map { |term|
"(LOWER(reserve.date) LIKE ?)"
}.join(' AND '),
*terms.map { |e| [e] * num_or_conds }.flatten
)
}
答案 0 :(得分:1)
也许你应该建立一个range query condition
整个想法是,使用ruby Date class来构建日期对象
Date.parse('December')
=> #<Date: 2017-12-01 ((2458089j,0s,0n),+0s,2299161j)>
在irb
控制台中试验所有适合您需求的方法
正如answer中的Sajid Rabbani所述,将查询作为范围执行。如果用户只想要一天,那么您可以在里面设置if
条件或使用相同的start_date
和end_date
scope :date_range, -> (start_date, end_date) {
.where('reserve.date < ? AND reserve.date > ?',
start_date.to_date, end_date.to_date)
}
我没有关注你所写的所有格式,但它并不是很清楚。如果您想编写干代码,可以在method
类
date
class Date
def date_format
# include your logic
end
end