使用活动记录按月和日查找记录,忽略年份和时间

bjo*_*k24 4 activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord

我有一个模型(参赛作品),有五年的记录(每天一个记录).我需要一个方法,当传递一个日期对象时2011-12-25 00:00:00,会向我显示12/25发生的所有记录(查询:created_at列),无论传递的年份或时间如何.

RoR 3.0.9/Ruby 1.9.2p290

Jak*_*sey 12

您可以使用mysql的MONTH和DAY值.也许是这样的:

Model.where("MONTH(created_at) = ? and DAY(created_at) = ?", somedate.month, somedate.day)
Run Code Online (Sandbox Code Playgroud)


mu *_*ort 12

适用于大多数SQL数据库(包括MySQL和PostgreSQL)的通用解决方案:

Entry.where('extract(month from created_at) = ? AND extract(day from created_at) = ?', d.month, d.day)
Run Code Online (Sandbox Code Playgroud)

SQLite不明白,extract但你必须使用:

Entry.where("strftime('%m/%d', created_at) = ?", d.strftime('%m/%d'))
Run Code Online (Sandbox Code Playgroud)