我有一个名为Event的模型。我希望能够获得在某个特定日期创建的所有事件,这些事件应该是这样的Event.where(created_at: "20/01/2019".to_date)的问题是created_at字段还包含分钟,秒等,我想忽略。我只想按天,月和年比较日期。有什么方法可以实现吗?
Event
Event.where(created_at: "20/01/2019".to_date)
created_at
w1jd8yoj1#
您可以使用ActiveSupport核心扩展提供的Date#beginning_of_day和Date.end_of_day。
ActiveSupport
Date#beginning_of_day
Date.end_of_day
d = '2019-01-20'.to_date Event.where(created_at:(d.beginning_of_day..d.end_of_day))
字符串这并不一定会比较“.你可以用
Event.where( Arel::Nodes::NamedFunction.new('CAST', [Event.arel_table[:created_at].as('DATE')] ).eq(d) )
型如果你真的只想比较日,月和年。选项1将导致
events.created_at BETWEEN '2019-01-20 00:00:00' AND '2019-01-20 23:59:59'
型选项2将导致
CAST(events.created_at AS DATE) = '2019-01-20'
型
cig3rfwq2#
Event.where(created_at: d.to_time.all_day)
字符串
2条答案
按热度按时间w1jd8yoj1#
您可以使用
ActiveSupport
核心扩展提供的Date#beginning_of_day
和Date.end_of_day
。字符串
这并不一定会比较“.
你可以用
型
如果你真的只想比较日,月和年。
选项1将导致
型
选项2将导致
型
cig3rfwq2#
字符串