加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – 如何在Rails中创建“即将到来的生日”模块?

发布时间:2021-04-07 16:28:10 所属栏目:编程 来源:网络整理
导读:我有一个表“users”,其列为“date_of_birth”(日期,月份,年份为DATE名目). 在前端,我必要列出5个即将到来的生日. 花了很长时刻试图弄清晰这个逻辑……还赏识了谷歌里全部也许没有命运的文章. 有任何提议如安在RoR中做到这一点? 感谢! 办理要领 有几个谜底

我有一个表“users”,其列为“date_of_birth”(日期,月份,年份为DATE名目).
在前端,我必要列出5个即将到来的生日.

花了很长时刻试图弄清晰这个逻辑……还赏识了谷歌里全部也许没有命运的文章.

有任何提议如安在RoR中做到这一点?

感谢!

办理要领

有几个谜底提议计较/存储一年中的日期并对其举办分类,可是当你靠连年底而且必要在来岁年头思量有生日的人时,仅此一项并不会有多大甜头.

我会找一个办理方案来计较每小我私人下一个生日的完全日期(年,月,日),然后对此举办排序.您可以在Ruby代码中执行此操纵,也可以行使数据库中的存储进程执行此操纵.后者会更快,但会使您的应用措施更难以在往后迁徙到差异的数据库平台.

仅天天更新一次即将到来的生日列表是公道的,这意味着您可以行使某种情势的缓存.因此,所需的查询/代码的速率不是题目,只要您缓存功效,这样的工作应该可以正常事变:

class User
  def next_birthday
    year = Date.today.year
    mmdd = date_of_birth.strftime('%m%d')
    year += 1 if mmdd < Date.today.strftime('%m%d')
    mmdd = '0301' if mmdd == '0229' && !Date.parse("#{year}0101").leap?
    return Date.parse("#{year}#{mmdd}")
  end
end

users = User.find(:all,:select => 'id,date_of_birth').sort_by(&:next_birthday).first(5)

编辑:修复了与闰年一路正常事变.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读